Я бы предпочел
for (String string : stuff) {
...
}
Гораздо чище, и редко используется Iterator
.
Усовершенствованный цикл for может применяться ко всему, что реализует Iterable
, для которого требуется только метод iterator()
.
Если это невозможно, я предпочитаю первую версию, потому что она ограничивает область действия итератора, не требуя дополнительного набора скобок (вы можете заключить версию while
в {}
, чтобы получить тот же эффект, но с дополнительный уровень отступа).