1,产生情况:

增强for循环 中,或者 使用迭代器进行遍历 时,修改或删除集合元素,就会发生该异常情况;

2,原因:(详细可见迭代器的底层源码)

  1. 在创建集合时,迭代器的内部会有一个集合期望的操作次数,这数值等于集合的操作次数;
  2. 当迭代器获取元素时,会检测集合的元素是否改变;
  3. 如果当集合的元素与原先的相同时,没有问题就继续执行遍历;同时计算操作次数的计数器加一,始终与期望值相等;
  4. 但是,原本只有遍历下一个元素才会使计算操作次数的计数器加一,但是因为出现了修改或删除时,会增加不必要的次数,导致实际操作计数器的值与期望值不相等,抛出异常,程序终止。

    3,