Назад к вопросам
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(); // безопасное удаление
}
}