Java-使用自定义逻辑打印键值对的最大值
假设我有一个hashmap,其中包含如下数据:Java-使用自定义逻辑打印键值对的最大值,java,hashmap,Java,Hashmap,假设我有一个hashmap,其中包含如下数据: Hello - 2 Help - 2 World - 1 我希望能够基于该值打印前2个,如果2个对象的值相同,则基于键(在本例中为升序)。这是否仅适用于自定义的比较器对象,或者是否有更好的方法来实现这一点?要求有两个比较键使得解决方案非常重要,但您仍然可以通过组合助手方法返回的比较器来指定排序顺序,省去了编写自己的实现的麻烦 下面显示了一个具有内嵌比较器结构的流操作,它执行所需的选择 List<Map.Entry<String, In
Hello - 2
Help - 2
World - 1
我希望能够基于该值打印前2个,如果2个对象的值相同,则基于键(在本例中为升序)。这是否仅适用于自定义的
比较器
对象,或者是否有更好的方法来实现这一点?要求有两个比较键使得解决方案非常重要,但您仍然可以通过组合助手方法返回的比较器来指定排序顺序,省去了编写自己的实现的麻烦
下面显示了一个具有内嵌比较器结构的流操作,它执行所需的选择
List<Map.Entry<String, Integer>> result = map.entrySet().stream()
.sorted(Map.Entry.<String, Integer>comparingByValue()
.reversed()
.thenComparing(Map.Entry::getKey))
.limit(2)
.collect(toList());
List result=map.entrySet().stream()
.sorted(Map.Entry.comparingByValue()
.Then比较(Map.Entry::getKey))
.限额(2)
.collect(toList());
这能解决您的问题吗谢谢您的回答,但我要找的不是自定义比较器。只是想知道有更好的方法可以做到这一点。