gpt4 book ai didi

java - 如何在Java 8中同时按desc中的值和键按自然顺序对Map进行排序

转载 作者:行者123 更新时间:2023-12-02 09:43:43 24 4
gpt4 key购买 nike

有任何方法可以在同一操作中按键和值对 Map 进行排序。 map 具有值(value){hover=1,solar=1,waterproof=3,storage=1,battery=2}

所以排序后的值应该是

{waterproof=3, battery=2, hover=1, solar=1, storage=1}

我正在努力

    Map mp = map.entrySet().stream()
.sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
(newValue,oldValue) -> oldValue, LinkedHashMap::new))
//.sorted(Map.Entry.comparingByKey())
//.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
//(newValue,oldValue) -> oldValue, LinkedHashMap::new))
;

最佳答案

使用 thenComparing 创建比较器链:

Map mp = map.entrySet().stream()
.sorted(Collections.reverseOrder(Map.Entry.<String, Integer>comparingByValue())
.thenComparing(Map.Entry.comparingByKey()))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
(newValue, oldValue) -> oldValue, LinkedHashMap::new));

请注意,在这种情况下,您需要为第一个比较器指定显式类型参数,因为编译器无法在如此复杂的情况下推断类型。

关于java - 如何在Java 8中同时按desc中的值和键按自然顺序对Map进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58967948/

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