ディレクタ(Iterator)

1594 ワード

ディレクタ(Iterator)
ディケンサはオブジェクトであり、シーケンス中のオブジェクトを巡回して選択することができますが、開発者はシーケンスの下の構造を知る必要がありません。ローズマリーは一般に「ライト級」のオブジェクトと呼ばれていますが、作成した値段が小さいからです。
JavaのIterator機能は比較的簡単で、一方通行しかできません。
(1)使用方法iterator()は容器にIteratorを返すように要求します。初めてIteratorのnext()メソッドを呼び出すと、シーケンスの最初の要素が返されます。注意:iterator()方法はjava.lang.Iterableインターフェースであり、Collectionに継承される。
(2)next()を使って、シーケンスの次の要素を取得します。
(3)has Next()を使ってシーケンスに要素があるかどうかを確認します。
(4)Remove()を使用して、新たに返された要素を削除します。
IteratorはJavaディケンサの最も簡単な実現で、Listのために設計したListIteratorは更に多くの機能を持っています。それは2つの方向からListを遍歴することができます。Listから要素を挿入して削除することもできます。
Listのforeachサイクルが終了していない状態で、要素のremove/add操作を行います。「java.util.ContModificationException」エラーが発生しますので、remove要素はIterator方式を使用できます。もし同時に操作するなら、Iteratorオブジェクトにロックをかける必要があります。
ローズマリーアプリケーション:
list l = new ArrayList();
 l.add("aa");
 l.add("bb");
 l.add("cc");
 for (Iterator iter = l.iterator(); iter.hasNext();) {
  String str = (String)iter.next();
  System.out.println(str);
 }

 /*     while  
 Iterator iter = l.iterator();
 while(iter.hasNext()){
  String str = (String) iter.next();
  System.out.println(str);
 }
 */