Le collezioni "base" in java.util hanno un iteratore che viene definito "fail-fast". Ogni volta che si usa next(), l'iteratore verifica se la collezione associata è stata modificata "strutturalmente". Se è stata modificata viene lanciata ConcurrentModificationException. E tecnicamente questo comunque non è garantito al 100% per questioni che adesso non sto a precisare.Originariamente inviato da lelmarir
In entrambi i casi l'iteratore di listaPalline solleva l'eccezione ConcurrentModificationException.
(e ha anche ragione lui oltretutto....)
Quando ho detto "modificata" intendo dire modificata direttamente con i metodi della collezione. Se invece usi il remove() del iteratore puoi rimuovere tranquillamente l'elemento.
Questo però implica una cosa: non puoi usare il for-each in quanto "nasconde" l'iteratore. Semplicemente prendi l'iteratore in modo esplicito e usalo nel solito ciclo while(iter.hasNext()) { ... }

Rispondi quotando