您可以像这样使用自定义比较器:
Comparator<String> secondCharComparator = new Comparator<String>() {
@Override public int compare(String s1, String s2) {
return s1.substring(1, 2).compareTo(s2.substring(1, 2));
}
};
样品:
SortedMap<String,String> map =
new TreeMap<String,String>(secondCharComparator);
map.put("Za", "FOO");
map.put("Ab", "BAR");
map.put("00", "ZERO");
System.out.println(map); // prints "{00=ZERO, Za=FOO, Ab=BAR}"
请注意,这只是假设String
字符在索引1处有一个字符StringIndexOutOfBoundsException
。
另外,您也可以使用以下比较:
return s1.charAt(1) - s2.charAt(1);
通常,此减法“技巧”是char
无效的,但在这里可以正常使用,因为减法2 不会溢出int
。
不过substring
,compareTo
上面的and 解决方案更具可读性。
我试图用Priorityqueue和自定义比较器实现MST,但是我在O(n)时间内用它构建最小堆时遇到了问题。问题是Priorityqueue只有一个构造函数允许在O(n)中创建Priorityqueue,但它不使用任何比较器作为参数。我想让它使用我的自定义比较器。有解决这个问题的方法吗?AddAll()将失去对MST使用最小堆的目的,因为它是O(nlogn)方法。这是我的代码。 我想使用的比较器
在我的PriorityQueue中,我有两种类型的客户,即VIP和常规客户。我想先为贵宾服务,再为常客服务。 如果CustomerID<100,则视为VIP。 如果客户是VIP,他会排在队列中VIP部分的最后 更新:我不想排序任何其他列除了VIP。我不想添加“日期”,因为它感觉像是一个黑客,而不是理解Java是如何工作的。
问题内容: 为什么无论什么变量成立,它总是返回?即使使用clank搜索变量,它也会返回相同的结果。我错过了什么吗? 我的数组包含逗号分隔的值,我想在数组元素中的逗号之前基于字符串进行搜索。还有其他简单的解决方案吗?我还制作了一个自定义方法,该方法可以遍历数组并找到字符串,但是我正在寻找其他选择。 问题答案: JavaDoc on 声明必须已对数组进行排序,因此比较器实际上将数组值与搜索字符串进行比
问题内容: 我想为汽车清单开发一个排序演示。我正在使用数据表显示汽车列表。现在实际上我想按汽车颜色对列表进行排序。这里不是按字母顺序排序的。我想使用我的自定义排序顺序,例如先是红色汽车,然后是蓝色,等等。 为此,我尝试使用,但它只允许按字母顺序排序。 因此,任何人都可以指导我实现使用该技术的方法,以便使排序变得更快。 问题答案: 我建议你为汽车颜色创建一个枚举,而不要使用字符串,并且枚举的自然顺序
我创建了一个自定义比较器,可以按降序对获胜数进行排序,但我不确定它是如何工作的,有人能解释一下这是如何按降序排序的吗?
问题内容: 有没有一种方法可以JButton用您自己的按钮图形而不是仅在按钮内部创建图像? 如果没有,是否还有另一种方法可以JButton在Java中创建自定义? 问题答案: 当我第一次学习Java时,我们不得不制造Yahtzee,我认为创建自定义的Swing组件和容器会很酷,而不仅仅是在一个组件上绘制所有内容JPanel。Swing当然,扩展组件的好处是能够添加对键盘快捷键和其他辅助功能的支持,