java - 通过比较器与 java 流 api 对地图的值进行排序
问题描述
我有 aMap
并且想通过Comparator
将结果放入 a来对值进行排序LinkedHashMap
。
Map<String, User> sorted = test.getUsers()
.entrySet()
.stream()
.sorted(Map.Entry.comparingByValue(SORT_BY_NAME))
.collect(LinkedHashMap::new, (map, entry) -> map.put(entry.getKey(), entry.getValue()),
LinkedHashMap::putAll);
test.setUsers(sorted);
然而,所有的作品,我想知道这是否可以简化。
实际上,我创建了一个新的Map
并将其Map
放入setUsers()
. 我可以直接更改流而不创建新的LinkedHashMap
吗?
使用Collections.sort(Comparator)
,列表直接排序。但是,Collections.sort
不适用于地图。
解决方案
为什么不使用Collectors.toMap()
?
.collect(Collectors.toMap(
Entry::getKey,
Entry::getValue,
(a, b) -> { throw new AssertionError("impossible"); },
LinkedHashMap::new));
推荐阅读
- facebook - Facebook 应用审核要求
- wpf - WPF 单选按钮背景颜色
- firebase - 使用 Firebase 时如何管理在现有对象上添加新属性?
- php - Facebook 返回要下载的图片 URL
- mongodb - Mongo在数组字段上错误排序?
- python-3.x - 具有用于节点和树的单独类的二叉树实现
- nosql - Orientdb sql,从多个表中选择
- reactjs - 在 React 中的 style={{}} 中连接 props 和静态值
- spring - 将 spring.jackson.serialization.write-dates-as-timestamps & date-format 设置为全局 ISO1806
- sql-server - 通过选择返回返回值