我有下面的代码,我想从数组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();
}
}