問題:
list remove會報異常 爲什麼會報異常,其實想想也不難發現。
ArrayList底層是數組實現的,假設現在有a[0]=1,a[1]=2,a[2]=3
用for循環遍歷的時候
for(int i=0;i<list.size();i++){
}
假設遍歷到第二個數 也就是a[1]的時候,刪除了a[1] ArrayList的底層是將a[1]後面的數向前移動一個位置,由於下標改了 i沒改 這樣就會發生一些問題 所以就出現在遍歷的時候改變整個數組 就乾脆拋異常了
解決方法:
1.倒序刪
2.用迭代器刪
3.用一個臨時的tmpList保存要刪的東東,for完一起removeAll