Usuń elementy z kolekcji podczas iteracji

AFAIK, są dwa podejścia:

Iteruj kopię kolekcjiUżyj iteratora rzeczywistej kolekcji

Na przykład,

<code>List<Foo> fooListCopy = new ArrayList<Foo>(fooList);
for(Foo foo : fooListCopy){
    // modify actual fooList
}
</code>

i

<code>Iterator<Foo> itr = fooList.iterator();
while(itr.hasNext()){
    // modify actual fooList using itr.remove()
}
</code>

Czy są jakieś powody, by preferować jedno podejście do drugiego (np. Preferowanie pierwszego podejścia z prostej przyczyny czytelności)?

questionAnswers(8)

yourAnswerToTheQuestion