gpt4 book ai didi

Java 8 Map.Entry 比较器

转载 作者:太空狗 更新时间:2023-10-29 23:00:50 25 4
gpt4 key购买 nike

我一直在尝试使用 lambda 表达式在 Java8 中创建 Map.Entry Comparator 并且发现了一个非常奇怪的行为。

Map<Integer, String> map = new TreeMap<>();

map.put(1, "Hello");
map.put(3, "zzzz");
map.put(2, "aaaa");
map.put(5, "AAAAA");
map.put(4, "aaaa");

Comparator<Map.Entry<Integer, String>> com = Comparator.comparing(Map.Entry::getValue);
com = com.reversed();

Comparator<Map.Entry<Integer, String>> com2 = Comparator.comparing(Map.Entry::getValue).reversed();

com 工作正常,但 com2 包含错误“无法解析方法 getValue”。我真的不知道为什么?有什么建议吗?

附言有什么办法可以避免用 Integer, String 输入 Map.Entry 吗?有更短的路吗?

最佳答案

自 Java-8 以来,有一个独立的方法 Entry.comparingByValue可以改用:

Comparator<Map.Entry<Integer, String>> com2 = 
Map.Entry.<Integer, String>comparingByValue().reversed();

另一种方法是传递参数:

Comparator<Map.Entry<Integer, String>> com2 = 
Map.Entry.comparingByValue(Comparator.reverseOrder());

这样就不需要类型参数了。

关于Java 8 Map.Entry 比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31920582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com