Junior — Middle
100
Neden for-each döngüsü içinde koleksiyondan öğeleri kaldırmak, hatalara veya programın yanlış davranışına yol açabilir?
AI'dan gelen yanıt
sobes.tech yapay zeka
Удаление элементов из коллекции внутри цикла for-each (например, в Java) может привести к ошибкам или некорректному поведению, потому что во время итерации коллекция не должна изменяться структурно.
Причины:
- Итератор, используемый в for-each, не ожидает изменения размера коллекции, и при удалении элементов может выбросить ConcurrentModificationException.
- Даже если исключение не возникает, изменение коллекции может привести к пропуску элементов или повторной обработке одних и тех же элементов.
Правильный способ удаления элементов во время итерации — использовать явный итератор и его метод remove():
Iterator<String> iterator = collection.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
if (условие_для_удаления) {
iterator.remove();
}
}
Таким образом, удаление происходит безопасно, без нарушения внутреннего состояния коллекции и без ошибок.