在迭代列表时插入列表是不安全的吗?想法?我个人不确定...
问问题
145 次
2 回答
1
如果您使用对象遍历集合Iterator
,则更改底层集合将创建一个ConcurrentModificationError
会使代码崩溃的集合。即使您使用的是 for-each 循环,这也适用,因为这种类型的循环隐式声明了一个Iterator
.
于 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 回答