当 for 循环由 ArrayList 的大小控制时
(...; i < someArrayList.size(); ...)
但是循环的每次迭代都会向列表中添加一个元素,然后循环如何识别大小正在变化?我会认为,一旦代码被发送到编译器,它就会看到一次大小,然后执行直到达到原始大小,但显然不是这样。随着大小的增加,循环运行的次数也会增加。我认为它不会,所以很明显我不明白计算机是如何读取它的。我只是想知道系统如何读取这样的内容。
此外,是否有某种方法可以使循环只运行原始列表大小的次数(每次迭代再次添加元素)?假设你事先不知道大小,所以你不能输入一些常数。
最佳答案
在每次迭代开始时,计算中间的表达式。如果为真,则循环继续。如果为假,则循环中断。因此它将在每次迭代时重新评估大小。
要使其循环列表原始大小的次数,请执行以下操作:
int size = someArrayList.size();
for (i = 0 ; i < size ; i++) { ... }
或者如果你想变得花哨:
for (i = 0, size = someArrayList.size() ; i < size ; i++) { ... }
关于java - For 循环 : how is changing ArrayList size interpreted?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39809859/