我有 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));
慕少森
TA贡献2019条经验 获得超9个赞
您不能对不支持数组样式索引的集合执行就地排序,因此对于映射来说这是不可能的(除非您在 a 上使用类似选择排序的东西,但那将是一个坏主意)LinkedHashMap
。创建新地图是不可避免的。不过,您仍然可以按照 shmosel 的回答来简化它。
添加回答
举报
0/150
提交
取消