報錯
代碼如下:
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);
}
}
成功解決問題