Java でマップの各要素を繰り返し処理する方法

Mohammad Irfan 2023年10月12日
  1. Java で Map 要素を繰り返し処理する方法
  2. Java で for-loop を用いて Map 要素を繰り返し処理する
  3. Java で foreach を用いて Map 要素を繰り返し処理する
  4. Java の EntryIterator を用いた Map 要素の繰り返し処理する
  5. Java の for-eachkeySet() を用いて Map 要素を繰り返し処理する
  6. Java で while-loop を使って Map 要素を繰り返し処理する
  7. Java における StreamforEach を用いた Map 要素の繰り返し処理
  8. Java で forEachlambda を使ったマップ要素の繰り返し処理
Java でマップの各要素を繰り返し処理する方法

このチュートリアルでは、マップの各要素を繰り返し処理する方法と、それを理解するためのコード例を紹介します。

Java で Map 要素を繰り返し処理する方法

マップは、キーと値のペアの形でデータを収集するためのインタフェースです。Java には、for-loopfor-each loopwhile-loopforEach() メソッドなど、マップ要素を繰り返し処理するためのいくつかの方法が用意されています。例を見てみましょう。

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 の EntryIterator を用いた Map 要素の繰り返し処理する

iterator() メソッドは要素をトラバースするために Iterator を返し、EntryMap のエントリを収集するために使用されます。

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-eachkeySet() を用いて 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 における StreamforEach を用いた 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 で forEachlambda を使ったマップ要素の繰り返し処理

ラムダ式を使ってマップの要素を繰り返し処理することもできます。ここでは、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 Collection