Java初心者の競技プログラミング日記

Dvorak配列でjavaを書いてます

マップを値でソートする方法

マップを値でソートする方法については以前記事にしたのだけれども、

マップを値でソートするメソッド - Java初心者の競技プログラミング日記

あまりに冗長すぎるのでもっと短く書ける方法を探した。見つかった。

//昇順
map = map.entrySet().stream()
.sorted(Entry.<String,Integer>comparingByValue())
.collect(Collectors.toMap(Entry::getKey,Entry::getValue,(e1, e2)->e1,LinkedHashMap::new));

//降順
map = map.entrySet().stream()
.sorted(Entry.<String,Integer>comparingByValue().reversed())
.collect(Collectors.toMap(Entry::getKey,Entry::getValue,(e1, e2)->e1,LinkedHashMap::new));


java.util.Map.Entry と java.util.stream.Collectors をインポートしてある。





以下のサイトを参考にしました
How to Sort Map by values in Java 8 using Lambdas and Stream - Example Tutorial | Java67