java如何根据映射值的参数对映射进行排序?
Stream<Map.Entry<String, List<Object>>> sorted = index.entrySet().stream()
.sorted(Map.Entry.comparingByValue());
The method
sorted(Comparator<? super Map.Entry<String,List<NFArticle>>>)
in the typeStream<Map.Entry<String,List<NFArticle>>>
is not applicable for the arguments(Comparator <Map.Entry<Object,Comparable<? super Comparable<? super V>>>>)
我想根据作为HashMap
值的size()
列表对Hashmap
进行排序。如何使用Java8中的流库实现这一点
# 1 楼答案
Map.Entry.comparingByValue()
不能用作比较器这是
Stream<T> sorted(Comparator<? super T> comparator)
的一个比较器:# 2 楼答案
这可能对你有帮助
我将结果映射的类型更改为LinkedHashMap,以遵守插入顺序
# 3 楼答案
Map.Entry.comparingByValue()
仅当映射中的值是Comparable
,而List
不是Comparable
时才起作用。编译器的错误告诉您这一点您需要提供一个自定义的
Comparator
,它知道如何按列表的大小对列表进行排序,例如