我刚刚看到以下代码:
for(Iterator<String> iterator = stuff.iterator(); iterator.hasNext();) {
...
}
这让我觉得有点滥用for
......这段代码不会更好:
Iterator<String> iterator = stuff.iterator();
while(iterator.hasNext()) {
...
}
任何人都可以考虑使用for
的具体原因?哪种方法更好?
答案 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
}