Различие в значительной степени синтаксическое, за исключением того, что Iterator
может удалять элементы из Collection
, который он повторяет. Технически, улучшенные циклы for
позволяют вам циклически повторять все, что является Iterable
, что включает как минимум Collection
s и массивы.
Не беспокойтесь о различиях в производительности. Такая микрооптимизация не имеет никакого значения. Если вам нужно удалить предметы по ходу дела, используйте Iterator
. В противном случае for
циклы, как правило, используются более просто потому, что они более читабельны, например:
for (String s : stringList) { ... }
против
for (Iterator<String> iter = stringList.iterator(); iter.hasNext(); ) {
String s = iter.next();
...
}