我遇到ConcurrentModificationException
的问题。
我定义了ArrayList
Complex
个班级。我添加了两个Complex
es,并尝试为每个循环执行但我得到了ConcurrentModificationException
。但是,当我删除该行时,我没有错误。我需要这些初始点(1,0)
,(-1,0)
来计算我稍后需要的点。
for (Iterator<Complex> num = dots.iterator(); num.hasNext();) {
// ConcurrentModificationException
Complex aComplex = num.next();
// clone it and clear
temp.add(new Complex(aComplex));
dots.clear();
}
答案 0 :(得分:1)
迭代时无法修改集合。如果你想移动dots.clear();和temp.clear()迭代之外;它会得到解决。如果需要,只要需要清除这些集合,就可以创建一个标志;迭代结束后你可以清除它们。
答案 1 :(得分:0)
大多数迭代器实现都不允许修改底层结构,除非它在迭代器本身(remove
方法)上定义了语义。
因此,在代码的所有部分中,在 迭代结构时,您将获得ConcurrentModificationException
。