JavaでiteratorやEntrySetを使ってMapをループするいくつかの方法。それも、できるだけシンプルにね。


スポンサーリンク

Mapの内容をループする方法がいくつかあるので、まとめて紹介したいと思います。

紹介するのは以下の処理の方法です。

ジェネリクス使ってないMapをIteratorでループする

public void loopMap(Map map) {

	//Iteretorでループしてみる
	Iterator ite = map.entrySet().iterator();

	System.out.println("-----START Iterator-----");
	while (ite.hasNext()) {
		Map.Entry pairs = (Map.Entry)ite.next();
		System.out.println("key:" + pairs.getKey() + "\tvalue:" + pairs.getValue());
		ite.remove(); //ConcurrentModificationExceptionを避けるため
	}
	System.out.println("-----END Iterator-----");

}

これを使ってみます。

//Sample1
Map map = new HashMap();

map.put("1", "yuko");
map.put("2", "mika");
map.put("3", "asami");
Samples sample = new Samples();
sample.loopMap(map);

結果は以下のようになります。

-----START Iterator-----
key:3	value:asami
key:2	value:mika
key:1	value:yuko
-----END Iterator-----

Mapのkeyだけ取り出す

public void loopMap2(Map<String,Object> map) {

	System.out.println("-----START loopMap(key loop)-----");
	for (String key : map.keySet()) {
		System.out.println(key);
	}
	System.out.println("-----END loopMap(key loop)-----");
}

こいつを使ってみます。

//Sample2
Map<String, Object> map2 = new HashMap();
map2.put("key1", "boo");
map2.put("key2", "fuga");
map2.put("key3", "hoge");

sample.loopMap2(map2);

結果は以下のようになります。

-----START loopMap(key loop)-----
key3
key2
key1
-----END loopMap(key loop)-----


Mapのvalueだけ取り出す

public void loopMap3(Map<String,Object> map) {

	System.out.println("-----START loopMap(value loop)-----");
	for (Object value : map.values()) {
		System.out.println(value);
	}
	System.out.println("-----END loopMap(value loop)-----");
}

こいつを使ってみます。

//Sample2
Map<String, Object> map2 = new HashMap();
map2.put("key1", "boo");
map2.put("key2", "fuga");
map2.put("key3", "hoge");
sample.loopMap3(map2);

結果は以下のようになります。

-----START loopMap(value loop)-----
hoge
fuga
boo
-----END loopMap(value loop)-----


Mapのkeyとvalueを取り出す

public void loopMap4(Map<String,Object> map) {


	System.out.println("-----START loopMap(key and value)-----");
	for (Map.Entry<String, Object> entry : map.entrySet()) {
		String key = entry.getKey();
		Object value = entry.getValue();
		System.out.println("key:" + key + "\tvalue:" + value);
	}
	System.out.println("-----END loopMap(key and value)-----");
}

こいつを使ってみます。

Map<String, Object> map2 = new HashMap();
map2.put("key1", "boo");
map2.put("key2", "fuga");
map2.put("key3", "hoge");
sample.loopMap4(map2);

結果は以下のようになります。

-----START loopMap(key and value)-----
key:key3	value:hoge
key:key2	value:fuga
key:key1	value:boo
-----END loopMap(key and value)-----

改訂2版 パーフェクトJava

改訂2版 パーフェクトJava