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

Какое конкретное исключение возникает, если изменять содержимое коллекции во время её обхода с помощью итератора?

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

sobes.tech AI

В Java при изменении содержимого коллекции во время её обхода с помощью итератора возникает исключение ConcurrentModificationException.

Это происходит потому, что большинство коллекций в Java реализуют механизм fail-fast итераторов, которые отслеживают изменения коллекции вне итератора и при обнаружении таких изменений выбрасывают это исключение.

Пример:

List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));
for (String item : list) {
    if (item.equals("b")) {
        list.remove(item); // вызовет ConcurrentModificationException
    }
}

Чтобы избежать этого, нужно использовать методы итератора для удаления элементов:

Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    String item = iterator.next();
    if (item.equals("b")) {
        iterator.remove(); // безопасное удаление
    }
}