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

前端之家收集整理的这篇文章主要介绍了java – 为什么对foreach方法进行并发修改而不对for循环进行修改前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

 ArrayList

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

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

Arraylist source code

735 
736     public Iterator

你的foreach循环等于

for(Iterator

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

JLS开始

List

将被翻译为:

for (Iterator

猜你在找的Java相关文章