迭代数组列表而不引发异常的正确方法是什么?我试过这个:
while(packages.get(i)!=null)
{
if(packages.get(i).equals(z))
{
packages.remove(i);
this.setNumPack(this.getNumPack()-1);
}
i++;
}
当索引大于数组列表的大小时,它会抛出异常。我也尝试迭代,只要迭代器小于数组的大小,但它没有帮助。谢谢
最佳答案
有很多方法可以迭代和删除,但在您的特定代码中,解决方案不是在删除元素时增加索引(因为删除元素会减少被删除元素之后的所有元素的索引):
while(packages.get(i)!=null)
{
if(packages.get(i).equals(z))
{
packages.remove(i);
this.setNumPack(this.getNumPack()-1);
} else {
i++;
}
}
当然,当i
到达packages.size()
时,packages.get(i)
仍然会抛出异常,所以一个for循环会更好:
for (int i = 0; i < packages.size(); i++)
{
if(packages.get(i).equals(z))
{
packages.remove(i);
this.setNumPack(this.getNumPack()-1);
i--;
}
}
关于java - 在Java中正确迭代数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43911961/