正如我們前面所知道。
在我們依靠遍歷刪除ArrayList時總是出現一些神奇的現象。比如
ArrayList<integer> arraylist = new ArrayList<integer>();
arraylist.add(1);
arraylist.add(1);
arraylist.add(2);
arraylist.add(3);
arraylist.add(1);
我們遍歷並刪除其中的1
for(int i = 0;i < arraylist.size();i++){
if(arraylist.get(i) == 1){
arraylist.remove(i);
}
}
然后我們發現了剩下的是{1,2,3}
emmmmmmmmmmmm
原因很簡單是因為我們在刪除第一個1的時候因為arraylist變小第二個1改變到了第一個1的位置上。
但是怎么解決的。
反着來
for(int i = arraylist.size();i > -1;i--){
if(arraylist.get(i) == 1){
arraylist.remove(i);
}
}