イテレータイテレータ詳細な分析
1.イテレータとは何ですか?
(1)反復モード。Javaは一般的に使用されるデザインパターンの一つです。これは、実装されたオブジェクトの基になるコレクションを知らなくても、オブジェクトの集合の要素のシーケンシャルアクセスのために使用することができます。
(2)イテレータは、オブジェクトの検索コレクションである容器のさまざまな共通のユーザインターフェースを提供し、達成するために、容器のトラバーサルの基礎となる実装を分離切り離します。
(3)の欠点は、新しいイテレータオブジェクト、ペアの増加を追加して新しいコレクションを追加する必要があります。
2、イテレータはどのように(使用)を使用するには?
(1)イテレータ()コンテナはIteratorを必要と返します。イテレータはシーケンスの最初の要素を返すことができるようになります。
使用(2)次の()シーケンスの次の要素を取得する
シーケンスの要素があるかどうかを確認する(3)のhasNext()。
(4)使用して削除()は、新たに削除のイテレータ要素を返します。
List<String> list = new ArrayList<String>();
list.add("张三");
list.add("李四");
list.add("王五");
list.add("赵六");
Iterator<String> it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
if (it.next().equals("李四")) {
it.remove();
}
}
System.out.println("------------------------");
System.out.println(list);
3、イテレータますか?
コレクション要素の通じプロセス(1)イテレータスレッドのコレクション要素を変更することはできません、それ以外の場合はConcurrentModificationEception例外がスローされます。
要素のセットができトラバースする工程(2)イテレータ削除方法除去するセット中の要素は、1つのオブジェクトIterator.next()メソッドの戻りによって削除されます。
(3)イテレータをしなければならないコレクションクラスオブジェクトに取り付けが存在する、イテレータ自体は、負荷データオブジェクトへの機能を有していません。
(4)カーソル形態によって指さイテレータ次の要素を返すnext()メソッド、。
4、イテレータと反復子の違いは何ですか?
三つの違い:インデックス位置を修正することができ、トラバーサルを逆にすることができ、削除を変更するための要素のリスト。
反復子:
(1)トラバーサル中には、オブジェクトリストの増加を修正することができません。あなたは、オブジェクトがメソッドを削除する削除することができます。
(2)のhasNextメソッドと次、トラバーサルの順序が実施されてもよいです。
(3)インデックスを配置しません。
反復子:(だけインタフェースリストに存在)
(1)トラバーサル中に、追加のリストを増加させることによって達成することができる()、セット()メソッドが変更されました。あなたはまた、削除することができます。
(2)hasPrevious()と前回()メソッドは、逆の順序トラバーサルで実施することができます。
(3)現在のインデックス位置に配置することができる、nextIndex()とpreviousIndex()を実現することができます。