0

リストを繰り返しながらリストに挿入するのは安全ではないというのは本当ですか?考え?個人的にはわかりません...

4

2 に答える 2

1

Iteratorオブジェクトを使用してコレクションを反復処理している場合、基になるコレクションを変更するとConcurrentModificationError、コードがクラッシュするが作成されます。これは、for-eachループを使用している場合でも適用されます。これは、このタイプのループが暗黙的に。を宣言しているためIteratorです。

ConcurrentModificationExceptionの詳細。

于 2013-03-27T04:19:20.577 に答える
1

予想どおり、ConcurrentModificationExceptionがスローされます。簡単な例でテストします。

public class Test {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);
        for(Iterator<Integer> it = list.iterator(); it.hasNext();it.next()){
            System.out.println(it.toString());
            list.add(4);
        }
    }
}

ArrayListをLinkedListに変更すると、同じ結果が得られます。正確に覚えている場合は、削除操作のみが有効です

于 2013-03-27T04:24:13.787 に答える