我经常看到如下代码:
Iterator i = list.iterator(); while(i.hasNext()) { ... }
但我写的是(当Java 1.5不可用或者每个都不能使用时):
for(Iterator i = list.iterator(); i.hasNext(); ) { ... }
因为
它更短
它保持i
在较小的范围内
它减少了混淆的可能性.(在i
外面使用?i
声明在哪里?)
我认为代码应该尽可能简单易懂,这样我才能制作复杂的代码来完成复杂的事情.你怎么看?哪个更好?
来自:http://jamesjava.blogspot.com/2006/04/iterating.html
我更喜欢for循环,因为它还将迭代器的范围设置为for循环.
while,for和foreach结构有适当的用途:
while
- 如果您正在迭代,请使用此选项,循环与否的决定因素仅基于条件.在这个循环结构中,保持索引只是次要问题; 一切都应该基于条件
for
- 如果要循环,请使用此选项,主要关注的是数组/集合/列表的索引.如果您最有可能通过所有元素并以特定顺序(例如,通过排序列表向后),则使用for更有用.
foreach
- 如果您只是需要通过您的收集而无论订单如何,请使用此选项.
显然上面有例外,但这是我在决定使用哪个时使用的一般规则.话虽如此,我倾向于foreach
更频繁地使用.
为什么不使用for-each构造?(我有一段时间没有使用过Java,但这在C#中存在,我很确定Java 1.5也有这个):
Listnames = new ArrayList (); names.add("a"); names.add("b"); names.add("c"); for (String name : names) System.out.println(name.charAt(0));