nimo23:
私が持っているMap
として値をソートするComparator
に結果を置きます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
地図では動作しません。
レオ阿蘇:
あなたは、それは問題外であるマップのためにそう、インプレース配列形式のインデックスをサポートしていないコレクションにソートを実行することはできません(あなたはソートの選択のようなものを使用することを除いてLinkedHashMap
、それは悪い考えだろう)。新しいマップを作成することは避けられません。あなたはまだshmoselの答えに従うことによって、しかし、それを簡素化することができます。