为什么这段代码会给出异常

时间:2015-07-16 11:21:04

标签: java

为什么我得到这个例外?

我是java和stackoverflow的新手

ArrayList<A> a = new ArrayList<A>();
ArrayList<B> b = new ArrayList<B>();

a.add(new A("A"));
a.add(new A("B"));
a.add(new A("C"));

b.add(new B(new A("A"), "a"));
b.add(new B(new A("B"), "b"));
b.add(new B(new A("C"), "c"));

System.out.println(a);
System.out.println(b);

bIterator = b.iterator();
while(bIterator.hasNext()) {
    b.add(new B(bIterator.next(), "a"));
}

错误

Exception in thread "main" java.util.ConcurrentModificationException

4 个答案:

答案 0 :(得分:5)

您得到此异常,因为您遍历列表并同时修改它。

答案 1 :(得分:1)

  

下面的代码是创建问题,因为你正在迭代   在列表上并同时修改它。

while(bIterator.hasNext()) {
    b.add(new B(bIterator.next(), "a"));
}

ConcurrentModificationException

答案 2 :(得分:0)

while(bIterator.hasNext()) {
    b.add(new B(bIterator.next(), "a"));
}

如果仔细查看上面的行,则会迭代该列表并尝试同时添加更多元素。

答案 3 :(得分:0)

抛出异常是因为您在迭代时修改了ArrayList。 但是,有一些List实现支持此功能,例如CopyOnWriteArrayList