gpt4 book ai didi

java - 旧的 for-each 循环有效,新的 for-each 循环出现 ConcurrentModificationException

转载 作者:行者123 更新时间:2023-12-02 04:26:47 25 4
gpt4 key购买 nike

根据我所读到的内容,我了解到当您尝试编辑仍在迭代的列表时,您会收到 ConcurrentModificationException。

现在我不明白的是,为什么旧​​的 foreach 循环没有给出异常,而新的 foreach 循环却给出了异常?

public void newForeachLoop() {
for (Person person : list) {
if (person.getPosition().equals(this.getPosition())) {
list.remove(person);
}
}
}

public void oldForeachLoop() {
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getPosition().equals(this.getPosition())) {
list.remove(list.get(i));
}
}
}

最佳答案

在旧循环中,您使用列表迭代器,而是使用列表中对象的计数。

在新循环中,您使用内置迭代器,它是该实例的指针。当您从列表中删除一个项目时,您正在修改该实例并重置迭代器,从而引发异常。

关于java - 旧的 for-each 循环有效,新的 for-each 循环出现 ConcurrentModificationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32054068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com