我在一本书中看到以下声明:
任何基于写时复制
Iterator
或ListIterator
(例如添加、设置或删除)调用的变异方法都会抛出UnsupportedOperationException
.
但是当我运行以下代码时,它工作得很好并且不会抛出UnsupportedOperationException
.
List<Integer> list = new CopyOnWriteArrayList<>(Arrays.asList(4, 3, 52));
System.out.println("Before " + list);
for (Integer item : list) {
System.out.println(item + " ");
list.remove(item);
}
System.out.println("After " + list);
上面的代码给出了以下结果:
Before [4, 3, 52]
4
3
52
After []
list
为什么在使用该方法修改给定值时没有出现异常remove
?