【发布时间】:2014-03-03 22:43:27
【问题描述】:
在我的代码中:
Collection<String> c = new ArrayList<>();
Iterator<String> it = c.iterator();
c.add("Hello");
System.out.println(it.next());
出现异常,因为我的集合在迭代器创建后发生了变化。
但是在这段代码中呢:
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
for (Integer integer : list) { // Exception is here
if (integer.equals(2)) {
list.remove(integer);
}
}
为什么会出现异常?
在第二个代码中,我在 for-each 循环之前对我的集合进行了更改。
【问题讨论】:
-
如果 remove() 不修改集合,你会做什么?
-
for-each 使用迭代器。
-
这个问题似乎离题了,因为它没有显示之前的研究
标签: java collections arraylist concurrentmodification