Java For循环:如何解释更改ArrayList大小?

Java For循环:如何解释更改ArrayList大小?,java,loops,arraylist,Java,Loops,Arraylist,当for循环由ArrayList的大小控制时 (...; i < someArrayList.size(); ...) (…;i

当for循环由ArrayList的大小控制时

(...; i < someArrayList.size(); ...)
(…;i
但是循环的每次迭代都会向列表中添加一个元素,那么循环如何识别大小的变化呢?我会认为,一旦代码被发送到编译器,它会看到大小一次,然后再这样做,直到它达到原始大小,但显然不是这样。随着大小的增加,循环的运行次数也会增加。我想不会的,很明显我不明白电脑是怎么读的。我只是想知道这个系统是如何读取这样的内容的


另外,是否有某种方法使循环只运行原始列表大小的次数(每次迭代都添加元素)?假设你事先不知道尺寸,所以你不能输入一些常量

在每次迭代开始时,计算中间表达式。如果为真,循环将继续。如果为false,则循环中断。因此,它将在每次迭代中重新评估大小

要使其循环列表原始大小的次数,请执行以下操作:

int size = someArrayList.size();
for (i = 0 ; i < size ; i++) { ... }
final int originalSize = list.size();

for (int i = 0; i < originalSize; i++) {
...
}
int size=someArrayList.size();
对于(i=0;i
或者,如果你想变得花哨:

for (i = 0, size = someArrayList.size() ; i < size ; i++) { ... }
for(i=0,size=someArrayList.size();i
在ArrayList中add()方法的实现中,存储ArrayList大小的成员变量将被更新,size()表示该成员变量的getter,因此在每次迭代中都会调用此大小,以便获得大小的更新版本。

每次迭代都会调用
.size()
。这就是为什么在迭代器上循环是有效的,如果您只对
.hasNext()
求值一次,循环就永远不会结束。要仅在列表上迭代原始大小的次数,可以执行以下操作:

int size = someArrayList.size();
for (i = 0 ; i < size ; i++) { ... }
final int originalSize = list.size();

for (int i = 0; i < originalSize; i++) {
...
}
final int originalSize=list.size();
for(int i=0;i
为什么不试试?@RC。是的。。我知道它是有效的。我想知道为什么,比如为什么我最初的想法是错误的。@RC。我在做一些练习编码,我想把每个元素重新放到数组中,所以我用(IaddAll(),请参见
someArrayList.addAll(someArrayList))不需要循环。好吧,我知道每次迭代都会根据大小对“I”进行测试,但我不知道会检查大小以查看它是否改变。这是有道理的。点击左边计票下面的复选标记,我的答案将被标记为接受答案。非常感谢:DI单击,显示“4分钟内接受答案”。您可能还希望将循环声明为
for(int i=0,size=list.size();i
,其中
size
在循环头中声明。我将在4;)中单击