我的代码(基本内容如下);上次调用ConcurrentModificationException时会抛出hasNext()
PS-我已经尝试调试它,但似乎无法确定如何使其工作。如果我切换remove和add方法,它可以工作,但是如果somethingElse = something并没有真正帮助,它将删除唯一的值。

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

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


编辑-somethingElse可以完全是某物或一个新对象(有一个循环决定了这一点)
这是我的第一篇文章-如果文章过于抽象或代码不清楚,请告知我,我将发布完整代码。

谢谢! :)

最佳答案

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

如果是这样的话,您遍历列表并同时更新列表时将得到concurrentModificationException

因此,iterator不知道底层data structure中发生了什么,在出现严重错误之前,它会坚持使用fail-fast的策略。

(核心值后跟JDK:应妥善处理读写)

10-05 21:30