为了账号安全,请及时绑定邮箱和手机立即绑定

通过使用 java 流 api 的比较器对地图的值进行排序

通过使用 java 流 api 的比较器对地图的值进行排序

当年话下 2023-06-04 15:35:30
我有 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不适用于地图。
查看完整描述

2 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

为什么不使用Collectors.toMap()

.collect(Collectors.toMap(
        Entry::getKey,
        Entry::getValue,
        (a, b) -> { throw new AssertionError("impossible"); },
        LinkedHashMap::new));


查看完整回答
反对 回复 2023-06-04
?
慕少森

TA贡献2019条经验 获得超9个赞

您不能对不支持数组样式索引的集合执行就地排序,因此对于映射来说这是不可能的(除非您在 a 上使用类似选择排序的东西,但那将是一个坏主意)LinkedHashMap。创建新地图是不可避免的。不过,您仍然可以按照 shmosel 的回答来简化它。



查看完整回答
反对 回复 2023-06-04
  • 2 回答
  • 0 关注
  • 110 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信