java中for foreach效果对比,原理分析

最近闲来无事看了看java中for 与foreach的效率,文章如有错误之处,欢迎大家帮忙指正。谢谢。

首先foreach写法简单,但是不知道效率如何,

简单编写ArrayList测试用例,

 

java中for foreach效果对比,原理分析_第1张图片

可以看出foreach运行效率很慢,那么换一下LinderList呢。

java中for foreach效果对比,原理分析_第2张图片

效果很明显,foreach用于链表结构存储查询速度非常快。那么这么为什么呢?

for循环是根据下标一个个检索获取,而foreach是通过迭代器Iterator,不断获取next元素。

java中for foreach效果对比,原理分析_第3张图片

通过查看源码可以看到LinderList定义了一个迭代器,而foreach内部就是执行hasNext()和next()方法。在执行foreach时候无法对对象进行修改,是因为checkForComodification()中判断了当前对象修改次数与期望修改次数是否相等,不等就会抛出错误信息:ConsurrentModificationException。

 

你可能感兴趣的:(java)