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.