一、异常产生原因
当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。
/** * 删除快递 */
public void delete(Express express) {
if (expressList.size() == 0)
return;
for (Express express1 : expressList) {
if (express1 != null)
if (express.equals(express1))
expressList.remove(express1);
}
}
在做快递柜项目时,遍历list集合时删除元素出现的异常
报错如下:
从第一行可以看出异常种类
从第二行可以看出异常发生位置在checkForComodification()方法中。
有兴趣小伙伴可以去研究一下ArrayList中的原码,这里我直接说下我的结论。
二、解决方法
/** * 删除快递 */
public void delete(Express express) {
if (expressList.size() == 0)
return;
Iterator<Express> iterator = expressList.iterator();
while (iterator.hasNext()) {
Express express1 = iterator.next();
if (express1 != null)
if (express1.equals(express))
iterator.remove(); //这里我们用itrator中的remove方法
}
}