イテレータ同時変更の異常について

イテレータイテレータ
一覧<文字列>リスト=新しいArrayListを<>(); 
list.add( "老马");
list.add( "老王");
list.add( "老彭");
反復子の<string> = list.iteratorイテレータ(); 
一方(iterator.hasNext()){
IF(Iterator.next()に等しい( "王")){
Iterator.remove(); // [馬、 Laopeng]
list.remove( "王"); // [馬、Laopeng]
//list.add( "王+"); // ConcurrentModificationExceptionが
}
}
のSystem.out.println(リスト)
リストコレクションによって要素を追加し、そしてイテレータの予想時間は、要素が値の数を変更するために取得し、修正値の実際の数は、同じ結果ではない
(匿名の内部クラスのITR実装工程でのArrayListクラスイテレータ方法で特異的に()コードを参照)。


反復子の反復子:

反復子の<string> List.listIterator反復子=(); 
一方(listIterator.hasNext()){
IF(listIterator.next()に等しい( "王")。){
//ListIterator.remove(); // [オールド馬、Laopeng]
//listIterator.add( "李"); // [馬、ファラオ、町の話、ラオス鵬]
//listIterator.set( "趙はファラオを変更"); // [馬、趙王変化、Laopeng]
//list.remove( "王"); // [馬、Laopeng]
List.add( "アバディーンHO"); // ConcurrentModificationExceptionが
}
}
システム。 out.printlnを(リスト);
リスト収集添加元素によって、所望の素子反復修正数値を取得し、実際の値は、回数に同じ結果を変更しない
()は、特定の内部ArrayListクラスの反復子プロセス匿名ListItr(IN彼は親クラスのITR()継承されたので、ほぼ同様の特定の状況)
あなたが反復子の反復子の欠失が、並行処理の例外を生成しない場合は、直接反復子を呼び出す()メソッド自体は可能。
 

おすすめ

転載: www.cnblogs.com/robotsu/p/11486139.html