Удаление элементов из коллекции во время итерации

Насколько я знаю, есть два подхода:

  1. Итерация по копии коллекции
  2. Использовать итератор фактической коллекции

Например,

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()
}

есть какие-либо причины предпочесть один подход другому (, например предпочитая первый подход по простой причине удобочитаемости )?

195
задан user1329572 3 May 2012 в 02:21
поделиться