阿粉的读者遇到了一个比较经典的面试题,也就是标题上说的,为什么 foreach 中不允许对元素进行 add 和 remove。...阿粉就这个问题深入分析一下为什么不让使用 add 和 remove,并且实际运行一下,我们来看一下。...其实说这话的,一般都是没去看过源码的,为什么这么说,如果你要是反编译出来 foreach 这一段代码,那么你肯定发现内部是使用迭代器实现的,既然这样,那好,我们再用迭代器遍历一下试试。...为什么不相等的时候,就会出现异常呢?...,我们看运行结果:
没有删除元素前[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
删除元素后[0, 1, 2, 3, 4, 6, 7, 8, 9]
结果也是显而易见的,我们实现了在 foreach