Sobes.tech
Назад к вопросам
Junior — Middle
102

Какие последствия могут возникнуть при попытке изменить коллекцию во время обхода её элементов?

Компании, где спрашивали
ООО Ренью

Ответ от нейросети

sobes.tech AI

При попытке изменить коллекцию (например, добавить или удалить элементы) во время её обхода с помощью итератора в Java обычно возникает ConcurrentModificationException. Это происходит потому, что итератор фиксирует состояние коллекции при создании, и любые изменения вне методов итератора считаются некорректными.

Чтобы избежать этой ошибки, можно:

  • Использовать методы итератора для удаления элементов (iterator.remove()), которые безопасны.
  • Создать копию коллекции и обходить её, изменяя оригинал.
  • Использовать специальные коллекции из java.util.concurrent, которые поддерживают безопасное параллельное изменение.

Пример безопасного удаления элементов во время обхода:

Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    String item = iterator.next();
    if (item.equals("removeMe")) {
        iterator.remove(); // безопасно удаляет текущий элемент
    }
}