Java でマップの各要素を繰り返し処理する方法
- 
          
            Java で Map要素を繰り返し処理する方法
- 
          
            Java で for-loopを用いてMap要素を繰り返し処理する
- 
          
            Java で foreachを用いてMap要素を繰り返し処理する
- 
          
            Java の EntryとIteratorを用いたMap要素の繰り返し処理する
- 
          
            Java の for-eachとkeySet()を用いてMap要素を繰り返し処理する
- 
          
            Java で while-loopを使ってMap要素を繰り返し処理する
- 
          
            Java における StreamとforEachを用いたMap要素の繰り返し処理
- 
          
            Java で forEachとlambdaを使ったマップ要素の繰り返し処理
 
このチュートリアルでは、マップの各要素を繰り返し処理する方法と、それを理解するためのコード例を紹介します。
Java で Map 要素を繰り返し処理する方法
    
マップは、キーと値のペアの形でデータを収集するためのインタフェースです。Java には、for-loop、for-each loop、while-loop、forEach() メソッドなど、マップ要素を繰り返し処理するためのいくつかの方法が用意されています。例を見てみましょう。
Java で for-loop を用いて Map 要素を繰り返し処理する
単純な for-loop を用いて Map 要素の繰り返し処理を行う。ここでは、ループの中でエントリを取得するために iterator() メソッドを用います。
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class SimpleTesting {
  public static void main(String[] args) {
    Map<Integer, String> map = new HashMap<>();
    map.put(10, "Ten");
    map.put(100, "Hundred");
    map.put(1000, "Thousand");
    for (Iterator<Map.Entry<Integer, String>> entries = map.entrySet().iterator();
         entries.hasNext();) {
      Map.Entry<Integer, String> entry = entries.next();
      System.out.println(entry.getKey() + " : " + entry.getValue());
    }
  }
}
出力:
100 : Hundred
1000 : Thousand
10 : Ten
Java で foreach を用いて Map 要素を繰り返し処理する
マップの各エントリを繰り返し処理するには、for-each ループと entrySet() メソッドを用います。entrySet() メソッドはマップのエントリの集合を返します。
import java.util.HashMap;
import java.util.Map;
public class SimpleTesting {
  public static void main(String[] args) {
    Map<Integer, String> map = new HashMap<>();
    map.put(10, "Ten");
    map.put(100, "Hundred");
    map.put(1000, "Thousand");
    for (Map.Entry<Integer, String> entry : map.entrySet()) {
      System.out.println(entry.getKey() + ":" + entry.getValue());
    }
  }
}
出力:
100 : Hundred
1000 : Thousand
10 : Ten
Java の Entry と Iterator を用いた Map 要素の繰り返し処理する
iterator() メソッドは要素をトラバースするために Iterator を返し、Entry は Map のエントリを収集するために使用されます。
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class SimpleTesting {
  public static void main(String[] args) {
    Map<Integer, String> map = new HashMap<>();
    map.put(10, "Ten");
    map.put(100, "Hundred");
    map.put(1000, "Thousand");
    Iterator<Map.Entry<Integer, String>> entries = map.entrySet().iterator();
    while (entries.hasNext()) {
      Map.Entry<Integer, String> entry = entries.next();
      System.out.println(entry.getKey() + ":" + entry.getValue());
    }
  }
}
出力:
100 : Hundred
1000 : Thousand
10 : Ten
Java の for-each と keySet() を用いて Map 要素を繰り返し処理する
keySet() メソッドは Map のキーの集合を収集するために用いられ、さらに for-each ループを用いて繰り返し処理を行うために用いられます。
import java.util.HashMap;
import java.util.Map;
public class SimpleTesting {
  public static void main(String[] args) {
    Map<Integer, String> map = new HashMap<>();
    map.put(10, "Ten");
    map.put(100, "Hundred");
    map.put(1000, "Thousand");
    for (Integer key : map.keySet()) {
      System.out.println(key + " : " + map.get(key));
    }
  }
}
出力:
100 : Hundred
1000 : Thousand
10 : Ten
Java で while-loop を使って Map 要素を繰り返し処理する
ここでは、iterator() メソッドを用いてキーのイテレータを取得し、while ループを用いてキーの繰り返し処理を行う。キーの値を取得するには get() メソッドを用います。
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class SimpleTesting {
  public static void main(String[] args) {
    Map<Integer, String> map = new HashMap<>();
    map.put(10, "Ten");
    map.put(100, "Hundred");
    map.put(1000, "Thousand");
    Iterator<Integer> itr = map.keySet().iterator();
    while (itr.hasNext()) {
      Integer key = itr.next();
      System.out.println(key + " : " + map.get(key));
    }
  }
}
出力:
100 : Hundred
1000 : Thousand
10 : Ten
Java における Stream と forEach を用いた Map 要素の繰り返し処理
ストリームを用いて要素の繰り返し処理を行うことができます。ここでは、entrySet() を用いて、ストリームの forEach() メソッドを経由してさらに巡回するマップエントリを収集しています。
import java.util.HashMap;
import java.util.Map;
public class SimpleTesting {
  public static void main(String[] args) {
    Map<Integer, String> map = new HashMap<>();
    map.put(10, "Ten");
    map.put(100, "Hundred");
    map.put(1000, "Thousand");
    map.entrySet().stream().forEach(System.out::println);
  }
}
出力:
100=Hundred
1000=Thousand
10=Ten
Java で forEach と lambda を使ったマップ要素の繰り返し処理
ラムダ式を使ってマップの要素を繰り返し処理することもできます。ここでは、forEach() メソッドの中でラムダ式を使っています。
import java.util.HashMap;
import java.util.Map;
public class SimpleTesting {
  public static void main(String[] args) {
    Map<Integer, String> map = new HashMap<>();
    map.put(10, "Ten");
    map.put(100, "Hundred");
    map.put(1000, "Thousand");
    map.forEach((key, value) -> System.out.println(key + " : " + value));
  }
}
出力:
100 : Hundred
1000 : Thousand
10 : Ten
関連記事 - Java Map
- Java のインクリメント マップ
- Java でマップ値をリストに変換する
- Java でのマップフィルタリング
- Java でリストをマップに変換する
- Java で順序付きマップを作成する
- Java でマップを作成する