gpt4 book ai didi

java - 如何在 java 流中按值降序对 LinkedHashMap 进行排序?

转载 作者:太空狗 更新时间:2023-10-29 22:59:42 25 4
gpt4 key购买 nike

要按升序排序,我可以使用:

myMap.entrySet().stream()
.sorted(Map.Entry.comparingByValue())
.collect(Collectors.toMap(Entry::getKey, Entry::getValue));

如何按降序排列?

最佳答案

要以相反的顺序排序,将 Comparator.reverseOrder() 作为参数传递给 comparingByValue

要获得 LinkedHashMap,您必须使用 4 参数 toMap() 专门请求一个。如果您不指定所需的映射类型,您将获得默认值,目前恰好是 HashMap。由于 HashMap 不保留元素的顺序,因此它肯定不适合您。

myMap.entrySet().stream()
.sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
.collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue,
(x,y)-> {throw new AssertionError();},
LinkedHashMap::new
));

有了静态导入,它变得更令人愉快:

myMap.entrySet().stream()
.sorted(comparingByValue(reverseOrder()))
.collect(toMap(
Map.Entry::getKey,
Map.Entry::getValue,
(x,y)-> {throw new AssertionError();},
LinkedHashMap::new
));

关于java - 如何在 java 流中按值降序对 LinkedHashMap 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29860667/

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