alphaのjava備忘録

alphaが勉強したことを書いていくブログ

Iteratorを使うには

HashMapについて調べるときに良く出てくるIterator。ちょっと横道に逸れてIteratorについて調べてみた。

Iteratorとは

・インターフェイスの一つ。繰返処理での使用を念頭に置いたメソッドを持つ。
    (next()やhasNext()など)
    ・for文やwhile文とともに使用される。

・ArrayListやHashMapなどのコレクションフレームワークは、何等かの手段でIteratorの使用が可能。
 ・HashMapは格納順で要素を指定できないため、繰返処理や全要素の取得にIteratorが必要。


使用法は以下の通り。

import java.util.ArrayList;
import java.util.Iterator;

class Main
{
	public static void main (String[] args) 
	{
		ArrayList<String> al = new ArrayList<String>(){};
		al.add("aa");
		al.add("bb");
		
		for(Iterator i = al.iterator();i.hasNext();){
			System.out.println(i.next());
		}
	}
}

(1)ArrayListのオブジェクトであるalはiterator()メソッドを持つ。
(2)コレクションフレームワークのオブジェクトがiterator()メソッドを使用するとIterator変数iに格納できる形になる。
(3)で、これをfor文で回す。初期設定はIterator 変数i。継続条件はi.hasNext()がtrueであること。
すると実行結果が↓になる。

実行結果
aa
bb

さてHashMapの勉強中なんでHashMapでIteratorを使いたいのだけど、HashMapの要素取得にはキーが必要なのだった。put()したキー集合はkeySet()メソッドで取得できる。戻り値はSet型なので注意。

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

class Main
{
	public static void main (String[] args) 
	{
		HashMap<String,Integer> hm = new HashMap<String,Integer>();
		hm.put("key1",151);
		hm.put("key2",152);
		hm.put("key3",153);
		
		Set keys = hm.keySet();
		
		for(Iterator i = keys.iterator();i.hasNext();){
			System.out.println(i.next());
		}
		
		
	}
}

(1)HashMapのオブジェクトhmから全キーを取り出す。keySet()メソッド。戻り値はSet型。
(2)キーの格納されたkeysでiterator()メソッドを使用し、Iterator変数iに格納する。
(3)for文で回す。初期設定はIterator 変数i。継続条件はi.hasNext()がtrueであること。

実行結果
key1
key2
key3