Iterator
久々の更新です。
Iteratorについて調べてみました。
あるコレクションからデータを取り出すためには、いくつかの方法があります。
例えば、ArrayListから要素を取り出すときはfor文でこんな風に取り出します。
ArrayList<String> array; array.add("りんご"); array.add("ごりら"); array.add("らっぱ"); int i; for ( i = 0; i < array.size(); i++ ){ System.out.println("中身:"+ array.get(i)); }
でも、これだと、いくつか問題点があります。
☆ ArrayListの中身を簡単に変更できてしまう
☆ 取り出したいものの型(今回はArrayList)によって、使用するメソッド(今回はget(i))が変わってきてしまう
これではデータを隠蔽することができず、大問題です。
そこで便利なのがIterator。
これは、さきほどの問題を解決することができます。
要素を取り出す側からは、要素を変更することができませんし、何の型かわからなくても
要素を取り出すことができます。
しかも、for文では最初の要素から最後の要素まで順に取り出すことしかできませんが、
Iteratorは色んなメソッドがあり、逆方向からも要素を取り出すことができます。
Iterator<String> it = array.iterator();
while (it.hasNext())
{
Object val = it.next();
System.out.println(val.toString());
}
☆hasNext()
次の要素が存在するならtrueを、存在しないならfalseを返す
☆next()
要素の添え字をひとつ進めて次の要素をポイントする
そのほかにも色んなメソッドが。。。。
☆reset()
添え字をコレクションの始点に戻す
☆current()
添え字を進めないで、現在の要素を返す
色んな機能があるんですね♪