加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 为什么对foreach方法进行并发修改而不对for循环进行修改

发布时间:2020-05-24 07:39:59 所属栏目:Java 来源:互联网
导读:ArrayListInteger targets = new ArrayListInteger(); targets.add(2); targets.add(2); for (Integer testInt : targets ) { targets.add(1); } 我得到一个concurrent

 ArrayList

我得到一个concurrentModificationException,但正常的for循环.我没有任何例外.
在正常的forloop像: –

for(int i=0;i
最佳答案 ForEach循环不会直接在您的集合上循环.它使用了你的集合的迭代器.您可以在集合实现中看到迭代器.

从Arraylist source code起

735 
736     public Iterator

你的foreach循环等于

for(Iterator

因此,如果您在此处执行任何操作,并且同时修改集合,则引擎盖下的迭代器会出现混淆并引发异常.

从JLS开始

List

将被翻译为:

for (Iterator

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读