java - 我可以在迭代时从列表中删除吗?

标签 java

我有这个代码:

for(int i = 0; i < oldCars.size(); ++i)
    {
        if(oldCars.get(i).getVelocity().length() > 0.0f)
        {
            oldCars.get(i).update(timeStep);
        }
        else
        {
            oldCars.remove(i);
        }
    }

它似乎工作正常,但它会在所有条件下工作吗?

谢谢

最佳答案

迭代时如果要移除,从末尾开始:

for(int i = oldCars.size() - 1; i >= 0; i--)
{
    if(oldCars.get(i).getVelocity().length() > 0.0f)
    {
        oldCars.get(i).update(timeStep);
    }
    else
    {
        oldCars.remove(i);
    }
}

关于java - 我可以在迭代时从列表中删除吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13546647/

相关文章:

java - 如何在android中使用正则表达式为文本着色

Java flatmap Iterator<Pair<Stream<A>, Stream<B>>> 到 Pair<Stream<A>, Stream<B>>

java - 设置对象的值

java - Eclipse(安卓): Cannot be resolved to a type/variable etc

java - 创建没有指针别名的编程语言的可能性

java - 在不同的应用程序版本之间动态移动 session 特定数据

java - 替换java中字符串中第一次出现的两个星号

java - 指定端口时,Spring Boot Actuator 端点的单元测试不起作用

java - Apache Commons Http 客户端 - 注册客户端特定协议(protocol)

java - 无法找到 AWS JDK 中的类