gpt4 book ai didi

java - Java中 "for"语句每次循环都计算循环条件吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:29:12 24 4
gpt4 key购买 nike

这是我的 Java 代码:

List<Object> objects = new ArrayList();

// Assign values to objects
...

for (int i = 0; i < objects.size(); i++) {
Object object = objects.get(i);
...
}

我有两个问题:

  1. objects.size() 是在循环之前只计算一次,还是每次循环都计算一次?
  2. 如果每次循环都计算objects.size(),如果没有多线程保护,其他线程同时更改它,代码可能会崩溃。

我说的对吗?

最佳答案

答案:

  1. objects.size() 在每个循环中被调用(是否被计算取决于 ArrayList 的实现,你不应该关心它关于)
  2. 是的,另一个线程可能会更改列表,这会影响您的循环

真实答案:

您不必关心,以下是您不必关心的方式:

  1. 使用 CopyOnWriteArrayList ,这是线程安全的。如果您使用迭代器对其进行迭代(正如 foreach 语法在内部使用的那样),您将迭代列表就像迭代开始时一样
  2. 使用 foreach 语法,这意味着您不必使用索引等 - 它已为您完成:

for (Object object : objects) {
// do something with each object
}

关于java - Java中 "for"语句每次循环都计算循环条件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8426693/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com