java.util.ConcurrentModificationException
生活随笔
收集整理的這篇文章主要介紹了
java.util.ConcurrentModificationException
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天在刪除對象list中的一個對象的時候,報了這個異常:
for(CollectShare lc:collectList){if (collectShare.getId().equals(lc.getId())) {collectList.remove(lc);} }后來查了,給出的解釋如下:
關于Iterator的工作機制。Iterator是工作在一個獨立的線程中,并且擁有一個 mutex鎖,就是說Iterator在工作的時候,是不允許被迭代的對象被改變的。Iterator被創建的時候,建立了一個內存索引表(單鏈表),這 個索引表指向原來的對象,當原來的對象數量改變的時候,這個索引表的內容沒有同步改變,所以當索引指針往下移動的時候,便找不到要迭代的對象,于是產生錯 誤。List、Set等是動態的,可變對象數量的數據結構,但是Iterator則是單向不可變,只能順序讀取,不能逆序操作的數據結構,當 Iterator指向的原始數據發生變化時,Iterator自己就迷失了方向。
解決方法:可以在外面建立一個對象,把要刪除對象的id保存到對象里,到外面刪除。
總結
以上是生活随笔為你收集整理的java.util.ConcurrentModificationException的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unlinked Gradle proj
- 下一篇: Android 显示全文折叠控件