标题:List的遍历的同时删除该条数据后,该条数据后面的数据得下标就会向前进一,如果不做处理的话,数据遍历往后走时就会错过一条数据。
解决方法:
1.for遍历时remove数据后,修改下标为i–:
for(int i=0; i<list.size(); i++){
if(list.get(i).equals(flagId)){
list.remove(list.get(i));
i--;
}
}
2.for遍历的顺序按照下标从大到小遍历,这样就算删除数据后下标向前移动一位也不会对前面的数据有什么影响:
for(int i=list.size()-1; i>-1; i--){
if(list.get(i).equals(flagId)){
list.remove(list.get(i));
}
}
3.使用Iterator迭代器,思想与第一种相似。。。