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.