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

相关文章:

  • 2021-12-15
  • 2022-12-23
  • 2022-12-23
  • 2022-01-27
  • 2021-05-26
  • 2022-12-23
  • 2021-04-01
  • 2021-06-06
猜你喜欢
  • 2022-12-23
  • 2021-04-14
  • 2022-02-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案