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
我得到一个concurrentModificationException,但正常的for循环.我没有任何例外.
最佳答案
ForEach循环不会直接在您的集合上循环.它使用了你的集合的迭代器.您可以在集合实现中看到迭代器.
从Arraylist source code起
你的foreach循环等于
因此,如果您在此处执行任何操作,并且同时修改集合,则引擎盖下的迭代器会出现混淆并引发异常. 从JLS开始
将被翻译为: (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
