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);
    }
}

成功解决问题

发布了7 篇原创文章 · 获赞 11 · 访问量 259

猜你喜欢

转载自blog.csdn.net/weixin_43165512/article/details/105440277
今日推荐