java - 在Java中正确迭代数组列表

标签 java arraylist

迭代数组列表而不引发异常的正确方法是什么?我试过这个:

        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/

相关文章:

java - 如何获取Mandrill java api发送邮件的状态?

java - 通过创建一个新数组并确保没有发生内存泄漏来扩展 Java 数组

java - 我想将某些列的边框设置为粗,但所有列都已设置

java - Spring 4、JBoss 7、@Configuration Bean 等效 XML - Spring Transactions

java - HashSet 与 ArrayList

java - ArrayList 内容意外修改

java - Vaadin、Gwt、gwt + 服务器端的东西,还有其他东西吗?

java - 数组和读写文本文件问题 - Java

Java:高效的 ArrayList 过滤?

java - 第 i 个元素的值更改会影响 ArrayList 第 0 个元素的值