Junior — Middle
Какво се случва, ако пречим на премахването на елементи от колекцията по време на нейното обхождане?
sobes.tech AI
Отговор от AI
Ако по време на обхождане на колекция в Java се опитате да изтриете елементи директно от нея (например, чрез метода на колекцията), ще получите ConcurrentModificationException. Това се случва, защото итераторът следи промените в колекцията, и изтриването извън неговите методи нарушава цялостта на итерацията.
Правилният начин за изтриване на елементи по време на обхождане е да използвате метода remove() на самия итератор:
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
if (условие) {
iterator.remove(); // безопасно изтриване
}
}
По този начин, изтриването няма да наруши работата на итератора и няма да възникне изключение.