Лучше использовать «частичный» цикл for для этого кода или цикл while? - PullRequest
0 голосов
/ 24 марта 2010

Я только что наткнулся на следующий код:

for(Iterator<String> iterator = stuff.iterator(); iterator.hasNext();) {
   ...
}

Это выглядит как неправильное использование for ... Разве этот код не будет лучше как:

Iterator<String> iterator = stuff.iterator();
while(iterator.hasNext()) {
   ...
}

Какие-либо конкретные причины, по которым можно придумать использование for? Какой подход лучше?

Ответы [ 4 ]

7 голосов
/ 24 марта 2010

Я бы предпочел

for (String string : stuff) {
    ...
}

Гораздо чище, и редко используется Iterator.

Усовершенствованный цикл for может применяться ко всему, что реализует Iterable, для которого требуется только метод iterator().

Если это невозможно, я предпочитаю первую версию, потому что она ограничивает область действия итератора, не требуя дополнительного набора скобок (вы можете заключить версию while в {}, чтобы получить тот же эффект, но с дополнительный уровень отступа).

6 голосов
/ 24 марта 2010

Что такое stuff? Можете ли вы применить расширенный цикл для него?

for (String str : stuff) {
   doSmth (str);
}

Единственная причина для явного использования итераторов - это удаление определенных элементов во время цикла с iterator.remove().

4 голосов
/ 24 марта 2010

Цикл for лучше, потому что область действия Итератора ограничена внутри цикла.

0 голосов
/ 24 марта 2010

Почему бы вам не использовать цикл foreach ? от 1,5 ..

for (Element el : collection) {
  // do whatever
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...