for each 循环如何防止空列表?

2022-09-01 03:11:22

我读了 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
}

for (type var : arr) {
      body-of-loop
}

我的问题是 for each 循环如何为空列表工作。我知道对于常规的for循环,arr.length将只计算为0,循环不会执行。对于每个循环呢?


答案 1

我的问题是 for each 循环如何为空列表工作

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

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


答案 2

它使用迭代集合的迭代器,例如List。迭代器的实现者有责任编写 hasnext() 方法以在没有下一项时返回 false,如果集合为空,情况就是如此