AFAIK существует два подхода:
- Итерации над копией коллекции
- Использовать итератор фактической коллекции
Например,
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()
}
Есть ли какие-либо причины предпочесть один подход по сравнению с другим (например, предпочитая первый подход по простой причине удобочитаемости)?