在java集合的体系中,增强for的本质是一个简化版的迭代器,既可以用来遍历集合,还可以用来遍历数组。下面通过深究其内部底层实现,有如下简单代码
Collectioncollection=new ArrayList<>(); collection.add("张三1"); collection.add("张三2"); collection.add("张三3"); for (String s : collection) { System.out.println(s); }
通过debug调试,可知第一步返回一个Ttr()类;
这个类实现了Iterator接口
调用hasNext()方法
最后调用next()方法.
如果在增强for循环中对集合进行 *** 作,比如:
for (String s : collection) { System.out.println(s); collection.add(“a”); }
跟踪如下代码,就会报错java.util.ConcurrentModificationException
注意:
1、不要在增强for循环里进行元素的remove/add *** 作,移除元素使用Iterator接口中的remove()方法,如果并发 *** 作,需要对Iterator对象加锁
** 正例: Iterator
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)