java ---コレクションArrayListトラバースと要素の追加エラー

ArrayListをトラバースするように設定し、要素を追加してエラーを報告します

ケース:セットを作成し、「曹操」と「貂蝉」の2つの要素を保存し、セットをトラバースします。トラバースした要素が貂蝉の場合は、セットに「呂布」を追加します。

コード:

 ArrayList<Object> list = new ArrayList<>();
        list.add("曹操");
        list.add("貂蝉");
        for (int i = 0; i < list.size(); i++) {
    
    
            if (list.get(i).equals("貂蝉")){
    
    
                list.add("吕布");
            }
            System.out.println(list.get(i));
        }

        //增强for循环遍历
        for (Object o:list){
    
    
            System.out.println(o);
            if (o.equals("貂蝉")){
    
    
                list.add(1,"吕布");
            }
        }

        Iterator it= list.iterator();
        while (it.hasNext()){
    
    
            if (it.equals("貂蝉")){
    
    
                list.add("吕布");
            }
            System.out.println(it.next());
        }

それは実行していたとき、しかし、我々はjava.util.ConcurrentModificationExceptionがのエラーが報告されたことがわかりました。
ここに画像の説明を挿入します
私たちは、CRTLを押しながらIteatorを入力します。それを選択した後、メニューに移動して型階層を使用する
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ため、変更の数でコレクションが増加し、イテレータ変更の数が変更に従わない場合、エラーが報告されます。
要素を変更しても、コレクション内の変更の数は自動的に増加しません。これは、イテレーターの変更の数と同じであるため、エラーは報告されません。同様に、要素を削除すると、コレクション内の変更の数も変更されるため、エラーが報告されます。

おすすめ

転載: blog.csdn.net/weixin_44889894/article/details/111561315