java.util.ConcurrentModificationException報錯

java.util.ConcurrentModificationException報錯

報錯

代碼如下:

MyStack stack = new MyStack(8);
Iterator it = data.iterator();
while(data.size() != 0){
        for (int[] item:data) {
        findNextStack(stack,item,data); //有刪除操作
    }
}

報錯信息如下:

Exception in thread "main" java.util.ConcurrentModificationException
 at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
 at java.util.ArrayList$Itr.next(ArrayList.java:851)
 at Main.main(Main.java:19)

解決方法

報錯是因爲arrayList循環刪除元素不能使用foreach,因爲foreach是通過iterator迭代,當發生刪除操作時,list的remove方法不能同時增減expectedModCount,從而發生報錯,瞭解問題原因,該變循環方式,解決問題,代碼如下:

while(data.size() != 0){
        for (int index = 0; index < data.size(); index++) {
        findNextStack(stack,data.get(index),data);
    }
}

成功解決問題

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