最近遇到一个比较坑爹的事情,因为list这些集合比较常用foreach进行循环,比较方便。所以项目里很多foreach,但是今天遇到一个异常,如下图:
很困惑,于是看了foreach的底层源码。才发现原来foreach的底层是迭代器iterator实现的,通过下标判断是否还有下一个元素,但是对于下标边界,foreach只会算一次,这一点和for不同。 这就是为什么我们改变list的值后,出现异常的原因。我在遍历的时候,同时在另一个地方给集合添加了元素,但是我并不知道,因为对foreach用的多,没有注意。而且对于底层了解不多,经验不足。
解决方法是不用foreach,虽然很方便,但是如果不注意就会出问题。
foreach遍历时不能改变集合的值
最新推荐文章于 2022-04-28 23:09:00 发布