[Java] MapでStreamを使う方法

java

Mapでstreamを使う方法です。
stremの基本的な使い方とMapのKey・Valueそれぞれを使ってソートをかける方法も紹介しています。

[スポンサーリンク]

Map.streamの基本的な使い方

こちらのロジックがMapでstreamを使う一番シンプルなロジックです。
ソートをかけていないので、実行結果をみてみますと並び順に少し違和感があります。

public static void main( String[] args ) {
    Map<String, String> map = new HashMap<>();
    map.put("KEY1", "テスト100");
    map.put("KEY2", "テスト1");
    
    map.entrySet().stream()
        .forEach(s->System.out.println(s.getKey() + ":" + s.getValue()));
}
>実行結果
KEY2:テスト1
KEY1:テスト100

MapのKeyでソートをかける方法

上記のロジックにソートの処理を追加しました。

public static void main( String[] args ) {
    Map<String, String> map = new HashMap<>();
    map.put("KEY1", "テスト100");
    map.put("KEY2", "テスト1");
        
    // Keyでソート
    map.entrySet().stream().sorted(java.util.Map.Entry.comparingByKey())
    .forEach(s->System.out.println(s.getKey() + ":" + s.getValue()));
}
>実行結果
KEY1:テスト100
KEY2:テスト1

MapのValueでソートをかける方法

上記のロジックはKeyでソートをかけたのに対して、こちらhValueでソートしたものです。

public static void main( String[] args ) {
    Map<String, String> map = new HashMap<>();
    map.put("KEY1", "テスト100");
    map.put("KEY2", "テスト1");
        
    // Valueでソート
    map.entrySet().stream().sorted(java.util.Map.Entry.comparingByValue())
    .forEach(s->System.out.println(s.getKey() + ":" + s.getValue()));
}
>実行結果
KEY2:テスト1
KEY1:テスト100

さいごに

Mapを操作する時は基本的にはソートをかけておいた方が安全そうですね。
それでは!