Remover elementos da coleção enquanto iterar
AFAIK, existem duas abordagens:
Iterar sobre uma cópia da coleçãoUse o iterador da coleção realPor exemplo,
<code>List<Foo> fooListCopy = new ArrayList<Foo>(fooList); for(Foo foo : fooListCopy){ // modify actual fooList } </code>
e
<code>Iterator<Foo> itr = fooList.iterator(); while(itr.hasNext()){ // modify actual fooList using itr.remove() } </code>
Existe alguma razão para preferir uma abordagem sobre a outra (por exemplo, preferindo a primeira abordagem pela simples razão de legibilidade)?