java - ArrayList 中的添加/删除方法与设置方法

标签 java arraylist

在将 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/

相关文章:

java - Eclipse 插件,编辑器中的弹出菜单发生在哪里?

java - netty中的channelActive和channelRead有什么区别?

java - 方法参数和ArrayList

java - 如何将 ArrayList 写入 XML 文件?

java - 为什么设置ArrayList时不需要返回值?

java - 将多个 ArrayLists 快速聚合成一个

Java - 检查用户输入空白值是否失败

Java - JScience 定义一个新单元

Java 继承和避免经常使用 instanceof

java - 缺少返回语句方法