ConcurrentModificationException与ArrayList.iterator()

时间:2015-02-17 21:58:47

标签: java

我有一些代码。它曾经是这样的,

for(Shape s: shapes){
g.setColor(Color.blue);
    g.fill(sh);
    g.setColor(Color.gray);
    g.draw(sh);
}

但它抛出了一个ConcurrentModificationException,所以我把它更改为使用像这样的迭代器,

Iterator<Shape> s = shapes.iterator();
while(s.hasNext()){
Shape sh = s.next();
g.setColor(Color.blue);
    g.fill(s);
    g.setColor(Color.gray);
    g.draw(s);
}

但它仍然会抛出ConcurrentModificationException。也许是因为它在paint方法中调用,但那是因为它是在绘制时。

1 个答案:

答案 0 :(得分:2)

它抛出了这个例外,因为在这里有更多的代码&#34;部分,您正在修改(添加或删除)shapes

如果您使用迭代器,您可以致电:

s.remove();

但这就是全部。