Mapとイテレータ・拡張 for文

みるくあいらんどっ! > ドキュメント > Java > じっくり学ぶ Java講座 [初心者向け・入門]


Mapの全件出力

Mapは、キーと値の組み合わせで構成されています。ここでは、以下の 3つの場合について、イテレータを使用するものと拡張 for文を使用するものを組み合わせた合計 6種類について見ます。

  • キーのみを使用する場合
  • 値のみを使用する場合
  • キーと値の組み合わせを使用する場合

キーのみを使用する場合

イテレータを使用した場合

ソースコードは以下の通り。

W301/W301.java

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

/**
 * Mapの全要素(キー)を出力します(Iteratorを使用)。
 */
public class W301 {
	
	/**
	 * メインメソッド。
	 * @param args 引数
	 */
	public static void main(String[] args) {
		Map<String, String> weekdays = new HashMap<>();
		
		weekdays.put("Monday", "月曜日");
		weekdays.put("Tuesday", "火曜日");
		weekdays.put("Wednesday", "水曜日");
		weekdays.put("Thursday", "木曜日");
		weekdays.put("Friday", "金曜日");
		weekdays.put("Saturday", "土曜日");
		weekdays.put("Sunday", "日曜日");
		
		for(Iterator<String> iterator = weekdays.keySet().iterator(); iterator.hasNext(); ) {
			String key = iterator.next();
			System.out.println(key);
		}
	}
}

実行結果の例は以下の通り。

Saturday
Thursday
Monday
Tuesday
Wednesday
Friday
Sunday

拡張 for文を使用した場合

拡張 for文に置き換えます。

ソースコードは以下の通り。

W302/W302.java

import java.util.HashMap;
import java.util.Map;

/**
 * Mapの全要素(キー)を出力します(拡張 for文を使用)。
 */
public class W302 {
	
	/**
	 * メインメソッド。
	 * @param args 引数
	 */
	public static void main(String[] args) {
		Map<String, String> weekdays = new HashMap<>();
		
		weekdays.put("Monday", "月曜日");
		weekdays.put("Tuesday", "火曜日");
		weekdays.put("Wednesday", "水曜日");
		weekdays.put("Thursday", "木曜日");
		weekdays.put("Friday", "金曜日");
		weekdays.put("Saturday", "土曜日");
		weekdays.put("Sunday", "日曜日");
		
		// 拡張 for文を使用
		for(String key : weekdays.keySet()) {
			System.out.println(key);
		}
	}
}

実行結果の例は以下の通り。

Saturday
Thursday
Monday
Tuesday
Wednesday
Friday
Sunday

値のみを使用する場合

イテレータを使用した場合

Iteratorを使用する場合は、かなり複雑になります。拡張 for文を使用した例のほうが分かりやすいでしょう。

ソースコードは以下の通り。

W303/W303.java

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

/**
 * Mapの全要素(キー)を出力します(Iteratorを使用)。
 */
public class W303 {
	
	/**
	 * メインメソッド。
	 * @param args 引数
	 */
	public static void main(String[] args) {
		Map<String, String> weekdays = new HashMap<>();
		
		weekdays.put("Monday", "月曜日");
		weekdays.put("Tuesday", "火曜日");
		weekdays.put("Wednesday", "水曜日");
		weekdays.put("Thursday", "木曜日");
		weekdays.put("Friday", "金曜日");
		weekdays.put("Saturday", "土曜日");
		weekdays.put("Sunday", "日曜日");
		
		// Iteratorを使用
		for(Iterator<String> iterator = weekdays.values().iterator(); iterator.hasNext(); ) {
			String value = iterator.next();
			System.out.println(value);
		}
	}
}

実行結果の例は以下の通り。

土曜日
木曜日
月曜日
火曜日
水曜日
金曜日
日曜日

拡張 for文を使用した場合

拡張 for文に置き換えます。

ソースコードは以下の通り。

W304/W304.java

import java.util.HashMap;
import java.util.Map;

/**
 * Mapの全要素(値)を出力します(拡張 for文を使用)。
 */
public class W304 {
	
	/**
	 * メインメソッド。
	 * @param args 引数
	 */
	public static void main(String[] args) {
		Map<String, String> weekdays = new HashMap<>();
		
		weekdays.put("Monday", "月曜日");
		weekdays.put("Tuesday", "火曜日");
		weekdays.put("Wednesday", "水曜日");
		weekdays.put("Thursday", "木曜日");
		weekdays.put("Friday", "金曜日");
		weekdays.put("Saturday", "土曜日");
		weekdays.put("Sunday", "日曜日");
		
		// 拡張 for文を使用
		for(String value : weekdays.values()) {
			System.out.println(value);
		}
	}
}

実行結果の例は以下の通り。

土曜日
木曜日
月曜日
火曜日
水曜日
金曜日
日曜日

キーと値の組み合わせを使用する場合

イテレータを使用した場合

Iteratorを使用する場合は、かなり複雑になります。拡張 for文を使用した例のほうが分かりやすいでしょう。

ソースコードは以下の通り。

W305/W305.java

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

/**
 * Mapの全要素(キーと値)を出力します(Iteratorを使用)。
 */
public class W305 {
	
	/**
	 * メインメソッド。
	 * @param args 引数
	 */
	public static void main(String[] args) {
		Map<String, String> weekdays = new HashMap<>();
		
		weekdays.put("Monday", "月曜日");
		weekdays.put("Tuesday", "火曜日");
		weekdays.put("Wednesday", "水曜日");
		weekdays.put("Thursday", "木曜日");
		weekdays.put("Friday", "金曜日");
		weekdays.put("Saturday", "土曜日");
		weekdays.put("Sunday", "日曜日");
		
		// Iteratorを使用
		for(Iterator<Map.Entry<String, String>> iterator = weekdays.entrySet().iterator(); iterator.hasNext(); ) {
			Map.Entry<String, String> entry = iterator.next();
			System.out.println(entry.getKey() + " => " + entry.getValue());
		}
	}
}

実行結果の例は以下の通り。

Saturday => 土曜日
Thursday => 木曜日
Monday => 月曜日
Tuesday => 火曜日
Wednesday => 水曜日
Friday => 金曜日
Sunday => 日曜日

拡張 for文を使用した場合

拡張 for文に置き換えます。

ソースコードは以下の通り。

W306/W306.java

import java.util.HashMap;
import java.util.Map;

/**
 * Mapの全要素(キーと値)を出力します(拡張 for文を使用)。
 */
public class W306 {
	
	/**
	 * メインメソッド。
	 * @param args 引数
	 */
	public static void main(String[] args) {
		Map<String, String> weekdays = new HashMap<>();
		
		weekdays.put("Monday", "月曜日");
		weekdays.put("Tuesday", "火曜日");
		weekdays.put("Wednesday", "水曜日");
		weekdays.put("Thursday", "木曜日");
		weekdays.put("Friday", "金曜日");
		weekdays.put("Saturday", "土曜日");
		weekdays.put("Sunday", "日曜日");
		
		// 拡張 for文を使用
		for(Map.Entry<String, String> entry : weekdays.entrySet()) {
			System.out.println(entry.getKey() + " => " + entry.getValue());
		}
	}
}

実行結果の例は以下の通り。

Saturday => 土曜日
Thursday => 木曜日
Monday => 月曜日
Tuesday => 火曜日
Wednesday => 水曜日
Friday => 金曜日
Sunday => 日曜日
最終更新: 2015/05/16 , 公開: 2015/01/04
▲top