Sobes.tech
Junior — Middle

Co se stane, pokud zabráníme odstranění prvků z kolekce během jejího průchodu?

sobes.tech AI

Odpověď od AI

Pokud při procházení kolekce v Java pokusíte odstranit prvky přímo z ní (například pomocí metody kolekce), dojde k ConcurrentModificationException. K tomu dochází, protože iterátor sleduje změny kolekce, a odstranění mimo jeho metody narušuje integritu iterace.

Správný způsob odstranění prvků během procházení je použití metody remove() samotného iterátoru:

Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    String item = iterator.next();
    if (podmínka) {
        iterator.remove(); // bezpečné odstranění
    }
}

Tímto způsobem odstranění neporuší práci iterátoru a nevznikne žádná výjimka.