有任何方法可以在同一操作中按键和值对Map进行排序。映射具有值{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))
;发布于 2019-11-21 13:47:44
使用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));请注意,在这种情况下,您需要为第一个比较器指定显式类型参数,因为编译器无法在如此复杂的情况下推断类型。
https://stackoverflow.com/questions/58967948
复制相似问题