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

Что случится, если удалить элемент из коллекции внутри цикла foreach?

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

sobes.tech AI

Если попытаться удалить элемент из коллекции внутри цикла foreach (enhanced for loop) в Java, то возникнет исключение ConcurrentModificationException. Это происходит потому, что foreach использует внутренний итератор, который отслеживает изменения коллекции, и удаление напрямую нарушает его состояние.

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

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