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