Eliminar elementos de la colección mientras se itera.
AFAIK, hay dos enfoques:
Iterar sobre una copia de la colección.Usa el iterador de la colección actual.Por ejemplo,
List<Foo> fooListCopy = new ArrayList<Foo>(fooList);
for(Foo foo : fooListCopy){
// modify actual fooList
}
y
Iterator<Foo> itr = fooList.iterator();
while(itr.hasNext()){
// modify actual fooList using itr.remove()
}
¿Hay alguna razón para preferir un enfoque sobre el otro (por ejemplo, preferir el primer enfoque por el simple motivo de la legibilidad)?