为此代码或while循环使用“部分”for循环更好吗?

时间:2010-03-24 19:14:27

标签: java loops

我刚刚看到以下代码:

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

这让我觉得有点滥用for ......这段代码不会更好:

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

任何人都可以考虑使用for的具体原因?哪种方法更好?

4 个答案:

答案 0 :(得分:7)

我更喜欢

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

更清洁,Iterator很少有实际用途。

增强的for循环可以应用于实现Iterable的任何内容,只需要iterator()方法。

如果那是不可能的,我更喜欢第一个版本,因为它限制了迭代器的范围,而不需要额外的括号集(你可以将while版本包装在{}内以获得相同的效果,但附加水平的缩进)。

答案 1 :(得分:6)

什么是stuff?你可以申请enhanced for loop吗?

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

显式使用迭代器的唯一原因是在使用iterator.remove()循环时删除某些元素。

答案 2 :(得分:4)

for循环更好,因为Iterator的范围仅限于循环内部。

答案 3 :(得分:0)

为什么不使用 foreach 循环?从1.5 ..

for (Element el : collection) {
  // do whatever
}