一般的なJavaのイテレータ

19回の          // の組にわたって使用ArrayListの反復
 20は、<文字列> listIt =イテレータあるlist.iterator(); 21であり、一方、{(listIt.hasNext())22である;のSystem.out.println(listIt.next())23である} 24 / / セットにわたってセット反復使用25イテレータの<string> = Setit ; set.iterator()26であり、一方、(setIt.hasNext()){ 27 のSystem.out.println(listIt.next()); 28 } 29 // 使用を一連のオーバーLinkedListの反復30イテレータの<string> linkIt = linkList.iterator(); 31は、一方(linkIt.hasNext()){ 32System.out.println(listIt.next()); 33である} 



 あなたが反復の前に、イテレータは()list.itertorを採用して作成されているので、繰り返しの間に、リストはそのコンテナに変更された、場合操作の大きさは、
その後、Javaが例外を与えるだろう。この時点ではIteratorオブジェクトが同期リストに変更を加えるためのイニシアチブを取ることができなかったので、Javaはあなたがそのような操作はスレッドセーフではありません作りだと思います、
(にConcurrentModificationExceptionが例外をスロー)善意与えるリマインダー

リスト<文字列>リストを=新新ArrayList <ストリング>();
        List.add( "ジョー・スミス1。");
        List.add( "ジョン・ドウ2");
        List.add( "ジョン・ドウ3。");
        List.add( "ジョン・ドウ4") ;
        
        //のセットに対してArrayListの反復を使用し
        、<文字列> listIt list.iterator =()イテレータ;
        一方(listIt.hasNext()){
            オブジェクトOBJ = listIt.next()を、
            IF(obj.equals( "張3" )){
                list.remove(OBJ)。



https://www.cnblogs.com/zyuze/p/7726582.html

おすすめ

転載: www.cnblogs.com/doyourwant/p/11374974.html