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

jma*_*erx 1 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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Ale*_*oie 10

如果要在迭代时删除,请从结尾开始:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)