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

橙三吉。 提交于 2019-11-26 08:11:35

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

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

简单编写ArrayList测试用例,

 

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

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

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

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

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!