Javaは、APIをストリームとコンパレータでマップの値を並べ替えます

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し、その新しいを置くMapsetUsers()私は、新しいを作成せずに直接ストリームを変更することはできますかLinkedHashMap

ではCollections.sort(Comparator)、リストが直接ソートされます。しかし、Collections.sort地図では動作しません。

レオ阿蘇:

あなたは、それは問題外であるマップのためにそう、インプレース配列形式のインデックスをサポートしていないコレクションにソートを実行することはできません(あなたはソートの選択のようなものを使用することを除いてLinkedHashMap、それは悪い考えだろう)。新しいマップを作成することは避けられません。あなたはまだshmoselの答えに従うことによって、しかし、それを簡素化することができます。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=315493&siteId=1