我需要一个TreeMap的比较器。我应该在TreeMap的构造函数中匿名编写此代码吗?我还能怎么写我的比较器。目前,Java不喜欢我的代码(我可以匿名这样做吗?):
SortedMap<String, Double> myMap =
new TreeMap<String, Double>(new Comparator<Entry<String, Double>>()
{
public int compare(Entry<String, Double> o1, Entry<String, Double> o2)
{
return o1.getValue().compareTo(o2.getValue());
}
});
您无法根据值对TreeMap进行排序。
基于红黑树的NavigableMap实现。映射是根据其键的自然顺序或在映射创建时提供的Comparator进行排序的,具体取决于使用的是哪个构造函数。您需要提供
comparator
,Comparator<? super K>
因此比较器应该在键上进行比较。
要提供对值的排序,您将需要SortedSet。用
SortedSet<Map.Entry<String, Double>> sortedset = new TreeSet<Map.Entry<String, Double>>(
new Comparator<Map.Entry<String, Double>>() {
@Override
public int compare(Map.Entry<String, Double> e1,
Map.Entry<String, Double> e2) {
return e1.getValue().compareTo(e2.getValue());
}
});
sortedset.addAll(myMap.entrySet());
举个例子
SortedMap<String, Double> myMap = new TreeMap<String, Double>();
myMap.put("a", 10.0);
myMap.put("b", 9.0);
myMap.put("c", 11.0);
myMap.put("d", 2.0);
sortedset.addAll(myMap.entrySet());
System.out.println(sortedset);
输出:
[d=2.0, b=9.0, a=10.0, c=11.0]
我有一个关于compareTo函数如何帮助比较器排序的问题,即o1。比较(o2)与o2。比较(o1) 如果两个字符串相等,则此方法返回0,否则返回正值或负值。如果第一个字符串在词典上大于第二个字符串,则结果为正,否则结果为负。 上面的陈述很简单,但是为什么o1.compare(o2)会给我一个升序,而o2.compare(o1)给了我一个降序? 如果我有整数值“5,10,3”,我得到3,5,10和
假设我有一个双人课 我希望对它进行排序,首先是第一个值,然后是第二个值。现在,如果我这样做 一切都很好,列表按对的第一个值排序,但如果我这样做 它因错误而失败 好吧,所以它可能无法推断参数,所以如果我这样做 它因错误而失败 为什么它适用于comparing()而不适用于comparing()。然后比较()?
Snowpack Snowpack 也是一个与 Vite 十分类似的非构建式原生 ESM 开发服务器。除了不同的实现细节外,这两个项目在技术上比传统工具有很多共同优势。Vite 的依赖预绑定也受到了 Snowpack v1(现在是 esinstall)的启发。这两个项目之间的一些主要区别是: 生产构建 Snowpack 的默认构建输出是未打包的:它将每个文件转换为单独的构建模块,然后将这些模块提供
比较两个输入的大小 用法 Your browser does not support the video tag. 案例:小台灯 功能:当随机数A>B时,灯亮;当随机数A<B时灯灭 工作原理 在配置面板中设置操作符(>,<,=),将两个数值连接到节点的输入端。如果满足比较条件,结果将输出YES。否则将输出NO。
比较输入的数值与原来的数值。 用法 Your browser does not support the video tag. 案例:小闹钟 功能:今天15:00:00后,响起猫叫声小闹钟 工作原理 输入的值将用来被比较。如果这个值满足条件,那么这个节点将会输出“yes”;否则,输出“no”。 提示: 如果输入的是一个字符串,节点会尝试将它转化为数字;如果失败,将会输出“no” 如果输入的是一个对象
我们已经学习了条件语句,但如果我们不能进行比较,if语句并不怎么有用。 当然Vim允许我们比较值的大小,只是不会像看上去那么一目了然。 执行下面的命令: :::vim :if 10 > 1 : echom "foo" :endif 显然,Vim会显示foo。现在执行下面的命令: :::vim :if 10 > 2001 : echom "bar" :endif Vim什么都不显示,
问题内容: 假设我有一对班 我希望先按第一个值排序,然后再按第二个值排序。现在,如果我这样做 一切正常,列表按对的第一个值排序,但是如果我这样做 它因错误而失败 好的,所以它可能无法推断参数,所以如果我这样做 它因错误而失败 为什么它对compare()而不是compare()。thenComparing()有效? 问题答案: 该错误似乎与的通用参数有关。一种解决方法是尝试使用显式类型: 请注意,