Насколько я знаю, есть два подхода:
Например,
List<Foo> fooListCopy = new ArrayList<Foo>(fooList);
for(Foo foo : fooListCopy){
// modify actual fooList
}
и
Iterator<Foo> itr = fooList.iterator();
while(itr.hasNext()){
// modify actual fooList using itr.remove()
}
есть какие-либо причины предпочесть один подход другому (, например предпочитая первый подход по простой причине удобочитаемости )?