Junior — Middle
Cosa succede se si impedisce la rimozione di elementi dalla collezione durante la sua iterazione?
sobes.tech AI
Risposta dell'AI
Se durante l'iterazione di una collezione in Java si tenta di rimuovere gli elementi direttamente da essa (ad esempio, tramite il metodo della collezione), si otterrà una ConcurrentModificationException. Questo accade perché l'iteratore tiene traccia delle modifiche alla collezione, e la rimozione al di fuori dei suoi metodi viola l'integrità dell'iterazione.
Il modo corretto di rimuovere gli elementi durante l'iterazione è usare il metodo remove() dell'iteratore stesso:
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
if (condizione) {
iterator.remove(); // rimozione sicura
}
}
In questo modo, la rimozione non interromperà il funzionamento dell'iteratore e non si verificherà alcuna eccezione.