作者:燕歆波
導讀:在更新list數據時候,出現了java.util.ConcurrentModificationException 異常;
Introduce
由於在實現抖音播放視頻的效果,所以在滑到頂部時,需要加載上一頁的數據,然後放在List的前面(0位置);可是一運行就爆出了異常!
鬱悶了很久,查閱一些博客,人家雖沒有明說,但是也算基本指出了問題在哪兒了; 但是當我解決問題的那一刻,感覺頓悟了;
在AbstractList源碼中:
每當調用add等方法時,都會檢查一個字段(modCount),查詢modCount是在那些地方賦值,結果看到了在SubList中也賦了值,可是我在代碼中使用了subList的方法截取數據源,這個方法其實是修改了modCount值的,
然後當我再一次增加數據時(此時的數據是subList得到的數據),發現此時modCount與subList的modCount值是不同的,此時便會報出異常!所以在獲取子數據時,可以使用for循環,將所需數據過濾出來,避免使用subList!