#java
Вопрос:
Deque<Employee> employeeDeque = new LinkedList<>();
employeeDeque.offerLast(new Employee("Michael", 250));
employeeDeque.offerLast(new Employee("John", 250));
Iterator iterator = employeeDeque.iterator();
while (iterator.hasNext()) {
iterator.next();
employeeDeque.remove(new Employee("Michael", 250));
}
Тот же код с ArrayList с созданием этого исключения, но remove в LinkedList этого не делает. Почему это так? Методы Add() и Offer() все еще производят его.
Ответ №1:
Javadoc для LinkedList
говорит,
Обратите внимание, что отказоустойчивое поведение итератора не может быть гарантировано…Итераторы с отказоустойчивостью генерируют
ConcurrentModificationException
на основе наилучших усилий.