[Java]MapのValueで昇順・降順ソートする方法

java

以前MapのKeyでソートする方法を紹介しましたが、今回はMapのValueでソートする方法を紹介していきます。
今回もstreamを使ってソートしていきますので、Javaバージョンは8とします。

[スポンサーリンク]

目次

昇順ソート
降順ソート

昇順ソート

値のソートはcomparingByValueを使っていきます。

public static void main( String[] args ) {

    Map<Integer, String> map = new HashMap<>();
    map.put(1, "test222");
    map.put(2, "test111");

    // 昇順
    map.entrySet().stream()
        .sorted(java.util.Map.Entry.comparingByValue())
        .forEach(s -> System.out.println(s));
}
>実行結果
2=test111
1=test222

降順ソート

public static void main( String[] args ) {

    Map<Integer, String> map = new HashMap<>();
    map.put(1, "test222");
    map.put(2, "test111");

    // 降順
    map.entrySet().stream()
        .sorted(java.util.Collections.reverseOrder(java.util.Map.Entry.comparingByValue()))
         .forEach(s -> System.out.println(s));
}
>実行結果
1=test222
2=test111

さいごに

Mapのソート方法ですが、KeyでソートするのもValueでソートするのも大きな違いはありません!
comparingByKey()を使うか、comparingByValue()を使うかだけの違いなので、Mapのソート方法はちゃんとおさえておきましょう!

それでは!