Java-使用自定义逻辑打印键值对的最大值

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

假设我有一个hashmap,其中包含如下数据:

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());

这能解决您的问题吗谢谢您的回答,但我要找的不是自定义比较器。只是想知道有更好的方法可以做到这一点。