在迭代过程中插入列表是不是安全?思考?我个人不确定......
答案 0 :(得分:1)
如果使用Iterator
对象迭代集合,则更改底层集合将创建一个ConcurrentModificationError
,这将导致代码崩溃。即使您使用for-each循环,这也适用,因为这种类型的循环隐式声明Iterator
。
答案 1 :(得分: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会得到相同的结果。 如果我记得确切只有删除操作有效