在将 foreach 与 ArrayList 一起使用时,我知道使用添加/删除方法将不起作用,因为它会抛出并发修改异常,但为什么我能够在同一个 foreach 循环中使用 set 方法更改值?
这里是示例代码:
for (Integer integer : arr) {
if (integer==2) {
arr.set(1, 6);
}
System.out.println(integer);
}
System.out.println(arr);
如果我们改变 arr.add() 那么它会抛出一个错误,但是使用 set 它工作正常,这是什么原因?
最佳答案
根据docs ,如果在创建迭代器后列表被结构修改,则抛出 CME。由于 set()
仅替换现有元素,因此不会发生结构修改,也不会抛出异常。
关于java - ArrayList 中的添加/删除方法与设置方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53577953/