List修改數據造成 java.util.ConcurrentModificationException 異常

作者:燕歆波

導讀:在更新list數據時候,出現了java.util.ConcurrentModificationException 異常;

Introduce
由於在實現抖音播放視頻的效果,所以在滑到頂部時,需要加載上一頁的數據,然後放在List的前面(0位置);可是一運行就爆出了異常!
鬱悶了很久,查閱一些博客,人家雖沒有明說,但是也算基本指出了問題在哪兒了; 但是當我解決問題的那一刻,感覺頓悟了;

在AbstractList源碼中:
在這裏插入圖片描述
每當調用add等方法時,都會檢查一個字段(modCount),查詢modCount是在那些地方賦值,結果看到了在SubList中也賦了值,可是我在代碼中使用了subList的方法截取數據源,這個方法其實是修改了modCount值的,
在這裏插入圖片描述
然後當我再一次增加數據時(此時的數據是subList得到的數據),發現此時modCount與subList的modCount值是不同的,此時便會報出異常!所以在獲取子數據時,可以使用for循環,將所需數據過濾出來,避免使用subList!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章