如何对HashMap按值降序排序,值相同时按键升序排序
你可以直接在现有的比较器后链式追加二级排序规则,指定值相等时按键的自然升序排列即可,修改sorted方法的传参即可:
修改后的完整代码如下:
Map<Integer, Integer> sortedRelevance = new LinkedHashMap<>(); relevance.entrySet() .stream() .sorted(Map.Entry.<Integer, Integer>comparingByValue(Comparator.reverseOrder()) .thenComparing(Map.Entry.comparingByKey())) .forEachOrdered(x -> sortedRelevance.put(x.getKey(), x.getValue()));
上述代码会先按值降序排序,值相同的条目会自动触发二级排序规则,按key的升序排列,运行后最终得到的排序结果为{4=4, 5=4, 1=3, 2=3, 3=3, 6=3},符合需求。
内容的提问来源于stack exchange,提问作者Razvie-arr
相关产品推荐
相关产品推荐

