В книге я встречал следующее утверждение:
Любые методы мутирования, вызываемые на основе копирования-на-записи 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
?