Я не могу понять, почему мы не можем добиться этого, просто перебирая неизменяемый список, а не используя эту новую реализацию?
Почему CopyOnWriteArrayList отличается от итерации по немодифицируемому списку?
Ответы (1)
В javadoc из CopyOnWriteArrayList
указано
Поточно-ориентированный вариант
ArrayList
, в котором все изменяющие операции (добавление, установка и т. д.) реализуются путем создания новой копии базового массива.
В то время как javadoc Collections#unmodifiableList(List)
указывает
Возвращает неизменяемое представление указанного списка. Этот метод позволяет модулям предоставлять пользователям доступ «только для чтения» к внутренним спискам.
Операции запроса в возвращенном списке "прочитаны" до указанного списка и попытки изменить возвращенный список, будь то напрямую или через его итератор, приводят к
UnsupportedOperationException
.
Итак, нет, вы не можете получить функции, предоставляемые CopyOnWriteArrayList
, с List
, возвращаемым Collections#unmodifiableList(List)
.
CopyOnWriteArrayList
и итерацией поList
, возвращаемой вызваннымCollections.unmodifiableList(..)
? - person Sotirios Delimanolis   schedule 29.11.2014