Встречается на собеседованиях • сегодня
В чем причина получения ConcurrentModificationException в ArrayList
ConcurrentModificationException возникает при изменении коллекции во время итерации по ней, кроме как через методы самого итератора. Основные причины:
1. Изменение коллекции в for-each цикле:
```java
List list = new ArrayList<>();
list.add("A");
for (String s : list) {
list.add("B"); // Выбросит исключение
}
```
2. Параллельное изменение из разных потоков без синхронизации.
Как избежать:
- Использовать Iterator и его методы remove()/add()
- Синхронизировать доступ при работе с коллекцией из нескольких потоков
- Использовать ConcurrentHashMap/CopyOnWriteArrayList для многопоточного доступа
- Создавать копию коллекции перед итерацией
Пример правильного удаления:
```java
Iterator it = list.iterator();
while (it.hasNext()) {
it.next();
it.remove(); // Безопасное удаление
}
```

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы