报错
代码如下:
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);
}
}
成功解决问题