Sobes.tech
Junior — Middle

Čo sa stane, ak zabránime odstraňovaniu prvkov z kolekcie počas jej prechádzania?

sobes.tech AI

Odpoveď od AI

Ak počas prechádzania kolekcie v Jave sa pokúsite odstrániť prvky priamo z nej (napríklad cez metódu kolekcie), dôjde k ConcurrentModificationException. To sa stane preto, lebo iterátor sleduje zmeny v kolekcii a odstránenie mimo jeho metód narušuje integritu iterácie.

Správny spôsob odstraňovania prvkov počas prechádzania je použiť metódu remove() samotného iterátora:

Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    String item = iterator.next();
    if (podmienka) {
        iterator.remove(); // bezpečné odstránenie
    }
}

Týmto spôsobom odstránenie neporuší prácu iterátora a nevznikne žiadna výnimka.