Sobes.tech
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.