【发布时间】:2019-12-16 17:29:19
【问题描述】:
我想了解 CopyOnWriteArrayList。通常,就我的理解而言,我们不能在 for 循环中删除元素,而如果它存在,我们可以在迭代器中删除..
public class HelloWorld {
public static void main(String arfs[]) {
CopyOnWriteArrayList<String> copyOnWrite = new CopyOnWriteArrayList<String> ();
copyOnWrite.add("One");
copyOnWrite.add("Two");
copyOnWrite.add("Three");
copyOnWrite.add("Four");
for(int i=0; i<copyOnWrite.size(); i++) {
copyOnWrite.remove(i);
}
}
}
为什么这不会引发异常,因为我正在尝试从 CopyOnWriteArrayList 中删除一个元素...
Iterator<String> itr = copyOnWrite.iterator();
while(itr.hasNext()) {
itr.remove();
}
但是当使用 Iterator 时它会抛出一个异常......通常这应该是相反的权利......
【问题讨论】:
-
什么异常?