Java 8 流映射到按值排序的键列表

标签 java collections lambda java-8 java-stream

我有 map Map<Type, Long> countByType并且我想要一个列表,该列表按其对应的值对(最小到最大)键进行排序。我的尝试是:

countByType.entrySet().stream().sorted().collect(Collectors.toList());

但是这只是给了我一个条目列表,我怎样才能得到一个类型列表,而不会丢失顺序?

最佳答案

你说你想按值排序,但你的代码中没有。将 lambda(或方法引用)传递给 sorted 以告诉它您要如何排序。

你想拿到 key ;使用 map 将条目转换为键。

List<Type> types = countByType.entrySet().stream()
        .sorted(Comparator.comparing(Map.Entry::getValue))
        .map(Map.Entry::getKey)
        .collect(Collectors.toList());

关于Java 8 流映射到按值排序的键列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30425836/

相关文章:

java - 尝试连接到远程 MySQL 数据库时出现 PacketTooBigException

java - 与android中的子字符串混淆

java - 如何从 map 中获取特定的键和值

.net - 为什么我们要递归实现接口(interface)?

python - 使用 map 和 lambda 增加字典列表中的元素

c# - 如何将两个列表组合成一个 List<KeyValuePair<>>?

java - Ebean 在创建 JAR 后找不到实体

java - 如何设置Spring的DriverManagerDataSource的某些属性?

java - 存储一组静态字符串值的最佳方法

C++使用lambda进行隐式构造函数调用,期望函数指针