异常信息如下:
原因:每次remove后的size都会发生变化,但是迭代基数没有根据remove后的size动态调整,导致越界及集合遍历不完全。
正确用法:
1.在remove操作后,将索引位置-1
ArrayList arr = new ArrayList();
...
for(int i = 0; i < arr.size(); i++){
if(arr.get(i) == 0){
arr.remove(i);
i--;
}
}
2.使用迭代器
ArrayList arr = new ArrayList();
...
Iterator it = arr.iterator();
while(it.hasNext()){
if(it.next() == 0)
it.remove();
}
}