大家可能注意到,在用增强for循环或者迭代器去判断并且添加数据时,会出现这个异常
java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)
at java.util.ArrayList$Itr.next(ArrayList.java:859)
原因:在迭代器的底层实现中,会去判断两个值,这两个值如果是相等的,则没问题,如果不相等,则会出现这个错误
解决方法:
- 使用普通for循环,在普通for循环里不会发生这个错误
- 使用迭代器自带的remove()方法
Iterator<Goods> i1 = al.iterator();
while (i1.hasNext()){
Goods next = i1.next();
if(next.getId()==three){
i1.remove();
}
}
这样就可以将当前元素删除了。