Встречается на собеседованиях • сегодня
Какие ошибки вызывает изменение данных при итерировании
Изменение данных во время итерирования может вызвать `ConcurrentModificationException` при работе с коллекциями. Это происходит, когда коллекция модифицируется (добавление/удаление элементов) во время итерации, кроме как через методы самого итератора.
**Пример опасного кода:**
```java
List list = new ArrayList<>(Arrays.asList("a", "b", "c"));
for (String s : list) {
list.remove(s); // Выбросит ConcurrentModificationException
}
```
**Безопасные альтернативы:**
1. Использовать `Iterator.remove()`:
```java
Iterator it = list.iterator();
while (it.hasNext()) {
it.next();
it.remove(); // Корректное удаление
}
```
2. Копировать коллекцию перед изменением:
```java
new ArrayList<>(list).forEach(item -> list.remove(item));
```
Для `ConcurrentHashMap` и других потокобезопасных коллекций исключение не возникнет, но могут быть проблемы с согласованностью данных.

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