Junior — Middle
Mi történik, ha megakadályozzuk az elemek eltávolítását a gyűjteményből az iterálás során?
sobes.tech MI
Válasz az MI-től
Ha Java-ban egy kollekciót végigiterálsz, és közvetlenül próbálsz elemeket törölni belőle (például a kollekció metódusával), akkor ConcurrentModificationException-t kapsz. Ez azért van, mert az iterator figyeli a kollekció változásait, és a metódusain kívüli törlés megsérti az iteráció integritását.
A helyes módszer az elemek törlésére az iterálás közben az, hogy az iterator saját remove() metódusát használod:
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
if (feltétel) {
iterator.remove(); // biztonságos törlés
}
}
Így a törlés nem fogja megzavarni az iterator működését, és nem fog keletkezni kivétel.