每个循环如何防止空列表?

com*_*der 26 java foreach for-loop

我在http://www.leepoint.net/notes-java/flow/loops/foreach.html上阅读.每个相当于

for (int i = 0; i < arr.length; i++) { 
     type var = arr[i];
      body-of-loop
}
Run Code Online (Sandbox Code Playgroud)

for (type var : arr) {
      body-of-loop
}
Run Code Online (Sandbox Code Playgroud)

我的问题是每个循环如何为空列表工作.我知道对于常规for循环,arr.length将仅计算为0并且循环不会执行.每个循环怎么样?

Bra*_*raj 30

我的问题是每个循环如何为空列表工作

ForEach也以同样的方式工作.如果长度为零,则永远不会执行循环.

它们之间的唯一区别是ForEach当您想要迭代列表或数组的所有项时使用循环,而在正常for循环的情况下,您可以控制开始和结束索引.

  • 您始终可以使用 `if(something) break;` 来控制 for-each 循环的结束,哎呀,您不必*必须*迭代整个内容。 (4认同)

use*_*043 6

它使用Iterable集合的迭代器,例如List.Iterator的实现者有责任编写hasnext()方法,如果没有下一个项目则返回false,如果该集合为空则

  • 它位于语言规范部分14.14.2中.简而言之,如果集合(小c)是一个数组,那么编译器将代码转换为带有int计数器的标准for循环,如果集合(小c)是Iterable(其中包括Collection类)然后它调用迭代器. (4认同)