我有 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
提交
取消