迭代器并发修改错误(Java)

Iterator concurrentmodificationerror (Java)

我的代码(下面是最基本的代码);当最后一次调用 hasNext() 时,它会抛出一个 ConcurrentModificationException - PS- 我试过调试它,但我似乎无法确定如何让它工作。如果我切换 remove 和 add 方法,它会起作用,但它会删除唯一的值,如果 somethingElse = something 这不是真正有用的。

PS- 我知道解决方法here;但我需要在删除导致问题的值后添加它

Iterator<String> itr = something.iterator();
while (itr.hasNext()){
    String x = itr.next();
    itr.remove();
    somethingElse.add(x);            
}

Edit- somethingElse 可以是某物或一个新对象(有一个循环决定了这一点) 这是我的第一个 post- 如果它太抽象或代码不清楚,请告诉我,我会 post 我的完整代码。

谢谢! :)

你的问题理解的是什么-任何时间点SomethingElse都可以是something

如果是这种情况,您将在遍历列表并同时更新列表时得到 concurrentModificationException

所以 iterator 不知道底层发生了什么 data structure 它会在出现严重错误之前坚持 fail-fast 的政策。

(核心价值后跟JDK读写应该优雅地处理

您的 .remove 抛出该错误是因为您在遍历列表的同时修改列表。您可以使用 ConcurrentHashMap 和 CopyOnWriteArrayList 类 来修复此错误。

请参阅 link here 以获得有关错误的明确解释。