Java 8 流映射到按值排序的键列表
2022-08-31 14:29:16
我有地图,我想有一个列表,它按相应的值对键进行排序(最小到最大)。我的尝试是:Map<Type, Long> countByType
countByType.entrySet().stream().sorted().collect(Collectors.toList());
然而,这只是给了我一个条目列表,我如何获得类型列表,而不会丢失顺序?
我有地图,我想有一个列表,它按相应的值对键进行排序(最小到最大)。我的尝试是:Map<Type, Long> countByType
countByType.entrySet().stream().sorted().collect(Collectors.toList());
然而,这只是给了我一个条目列表,我如何获得类型列表,而不会丢失顺序?
你说你想按值排序,但你的代码中没有。将 lambda(或方法引用)传递给 它,以告知它您希望如何排序。sorted
你想得到钥匙;用于将条目转换为键。map
List<Type> types = countByType.entrySet().stream()
.sorted(Comparator.comparing(Map.Entry::getValue))
.map(Map.Entry::getKey)
.collect(Collectors.toList());
您必须根据条目的值使用自定义比较器进行排序。然后在收集之前选择所有密钥
countByType.entrySet()
.stream()
.sorted((e1, e2) -> e1.getValue().compareTo(e2.getValue())) // custom Comparator
.map(e -> e.getKey())
.collect(Collectors.toList());