foreach与for循环效率对比

以下内容整理自互联网,仅用于个人学习


for循环

  • for需要获取容器大小,如果计算大小比较耗时,那么for循环效率会很低。
  • for循环是根据容器大小防止越界,因此每次循环需要进行一次比较。

foreach

ForEach 编译成字节码之后,使用的是迭代器实现的,所以本质上是通过迭代器遍历的。
将foreach代码反编译后得到的代码如下:

public static void testForEach(List list) {  
    for (Iterator iterator = list.iterator(); iterator.hasNext();) {  
        Object t = iterator.next();  
        Object obj = t;  
    }  
} 

可以看到,只比迭代器遍历多了生成中间变量这一步,因此性能也略微下降了一些。

  • 无需获取容器大小。
  • 需要创建额外的迭代器变量。
  • 遍历期间得到的是对象,没有索引位置信息,因此没办法将指定索引位置对象替换为新对象,也就是不能赋值。

效率对比

由于for循环的特性,每次循环都会进行比较,所以效率上不如foreach。
但这个结论并不是绝对的,选择for或者foreach,还要考虑几点:

  • 如果只是读数据,优先选择foreach,因为效率高,而且代码简单,方便;
  • 如果要写数据,即替换指定索引位置处的对象,就只能选择for了。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,376评论 11 349
  • 我们在学习web前端的路程起步时总是疑问,我们如何更好的遍历元素呢?迭代器和生成器是什么?今天为大家带上与精彩的E...
    侬姝沁儿阅读 3,384评论 0 6
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,780评论 18 399
  • 小姑娘失恋的第十一天。 脑子里老是出现一幅画面:你有了喜欢的人,特别坚定的要和她在一起,和当初思考我们的问题时的那...
    歌者与猫Alice阅读 265评论 0 0
  • 完成任务: ● 百词斩: 四级单词结束✔ ●日语单词背写 ✔ ● 《五步玩转纯正英语》五集 结束 ✔ ●《每日一T...
    MickeyMinnie阅读 129评论 0 0