我有下面的代码,我想从数组p4中删除所有的“ 0”。该数组将被放入arraylist amountOfColorPoints中。 for循环应该一直工作到列表大小的末尾,但是删除第一个“ 0”之后它不再执行,正如我在控制台上看到的那样。问题是什么?可以请人帮我吗?

int[] p4={0,0,4};

ArrayList<Integer> amountOfColorPoints = new ArrayList<>();






for(int p=0; p<amountOfColorPoints.size(); p++) {
                if (amountOfColorPoints.get(p) == 0)
                    amountOfColorPoints.remove(p);}

最佳答案

从集合中删除元素(在迭代时)的安全方法是使用Java文档中提到的Iterator.remove()


  如果在迭代进行过程中以其他方式(而不是通过调用此方法)修改了基础集合,则未指定迭代器的行为。


就像是,

Iterator<Integer> iter = amountOfColorPoints.iterator();
while (iter.hasNext()) {
    if (iter.next() == 0) {
        iter.remove();
    }
}

09-25 21:43