ArrayList的并发修改异常

时间:2013-01-10 01:35:00

标签: java arraylist java.util.concurrent concurrentmodification

我遇到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();
        }

2 个答案:

答案 0 :(得分:1)

迭代时无法修改集合。如果你想移动dots.clear();和temp.clear()迭代之外;它会得到解决。如果需要,只要需要清除这些集合,就可以创建一个标志;迭代结束后你可以清除它们。

答案 1 :(得分:0)

大多数迭代器实现都不允许修改底层结构,除非它在迭代器本身(remove方法)上定义了语义。

因此,在代码的所有部分中,在 迭代结构时,您将获得ConcurrentModificationException