Sobes.tech
Junior — Middle

Какво се случва, ако пречим на премахването на елементи от колекцията по време на нейното обхождане?

sobes.tech AI

Отговор от AI

Ако по време на обхождане на колекция в Java се опитате да изтриете елементи директно от нея (например, чрез метода на колекцията), ще получите ConcurrentModificationException. Това се случва, защото итераторът следи промените в колекцията, и изтриването извън неговите методи нарушава цялостта на итерацията.

Правилният начин за изтриване на елементи по време на обхождане е да използвате метода remove() на самия итератор:

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

По този начин, изтриването няма да наруши работата на итератора и няма да възникне изключение.