gpt4 book ai didi

java - 如何按值遍历 Map 以及如果值相同则按键对它们进行排序?

转载 作者:行者123 更新时间:2023-11-29 06:28:34 24 4
gpt4 key购买 nike

我在 HashMap 中有团队和他们的分数。我能够按他们的值对他们进行排序。

Map<String, Integer> sortedMap = Points.entrySet().stream()
.sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
.collect(Collectors.toMap(Entry::getKey, Entry::getValue, (e1, e2) -> e1, LinkedHashMap::new));

现在我想遍历 sortedMap 并按顺序打印键,如果有匹配值,则对具有相同值的键进行排序,然后打印结果。

最佳答案

您可以使用 thenComparing 链接比较器:

Map<String, Integer> sortedMap = Points.entrySet().stream()
.sorted(Collections
.reverseOrder(
Map.Entry.<String, Integer>comparingByValue())
.thenComparing(Map.Entry.comparingByKey()))
.collect(Collectors.toMap(Entry::getKey, Entry::getValue,
(e1, e2) -> e1, LinkedHashMap::new));

这会将您现有的单一比较更改为两级比较。当第一个比较器认为两个元素相等时,第二个比较器用于确定顺序。

请注意,Java 8 引入了一个 reversedCollections.reverseOrder 略微简洁的比较器方法:

Map<String, Integer> sortedMap = in.entrySet().stream()
.sorted(Map.Entry.<String, Integer>comparingByValue().reversed()
.thenComparing(Map.Entry.comparingByKey()))
.collect(Collectors.toMap(Entry::getKey, Entry::getValue,
(e1, e2) -> e1, LinkedHashMap::new));

关于java - 如何按值遍历 Map 以及如果值相同则按键对它们进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44739814/

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