在编写lab2的过程中,遇到了一个奇怪的错误,让我疑惑了好久。
出错部分的代码。
报错——并发修改异常
出现这个错误的原因是一边遍历集合的元素一边删除,导致出错。所以改为在循环内仅仅只把待删除的元素加入到一个集合中,等到循环结束后再统一删除。这样就不会产生冲突了。除了这种方法,还可以使用java的迭代器iterator类来进行集合、数组的元素的遍历,可以解决很多问题,并且有很多方便的方法。
修改后的结果。
得到的教训是一边遍历一边对数组、集合之类的对象进行修改是要万分小心,比较保险的办法是使用迭代器,或者不用迭代器但把修改操作与遍历分割开来。