使用 for 循环或 while 循环进行迭代?

2022-09-01 01:48:05

我经常看到这样的代码:

Iterator i = list.iterator();
while(i.hasNext()) {
    ...
}

但是我写(当Java 1.5不可用或每个都不能使用时)作为:

for(Iterator i = list.iterator(); i.hasNext(); ) {
    ...
}

因为

  • 它更短
  • 它保持在较小的范围内i
  • 它减少了混淆的机会。(在外面使用吗?在哪里声明?ii

我认为代码应该尽可能简单易懂,这样我就只需要制作复杂的代码来做复杂的事情。你觉得怎么样?哪个更好?

寄件人: http://jamesjava.blogspot.com/2006/04/iterating.html


答案 1

我更喜欢 for 循环,因为它还将迭代器的作用域设置为 for 循环。


答案 2

while、for 和 foreach 构造有适当的用法:

  • while- 如果您正在迭代并且循环与否的决定因素仅基于条件,请使用此选项。在这个循环结构中,保持索引只是次要问题;一切都应该基于条件

  • for- 如果您正在循环并且主要关注的是数组/集合/列表的索引,请使用此选项。如果您最有可能以特定顺序遍历所有元素(例如,在排序列表中倒退),则使用 for 会更有用。

  • foreach- 如果您只需要浏览您的收藏而不考虑订单,请使用此功能。

显然,上述情况也有例外,但这是我在决定使用哪种规则时使用的一般规则。话虽如此,我倾向于更频繁地使用。foreach