• for循环与foreach的性能比较


    JDK1.5开始新增了foreach循环,在语法上比for循环简洁;

    但foreach并不是for循环的语法糖,而可以说是iterator的语法糖;

    普通for循环:

    for(int i=0;i<100;i++)
    {
        a = i;
    }    
    

     

    foreach循环:

    for(int i : integers)
    {
       a = i;
    }
    

     

    实质上等同于:

    for(Iterator<Integer> i=list.iterator();i.hasNext();)
    {
         a = i.next();  
    }
    

      

    区别:

    一个按顺序遍历,一个使用iterator迭代器遍历;

    从数据结构来说,画重点:

    for循环是随机访问元素,foreach是顺序链表访问元素;

    性能上:

    对于arraylist,是顺序表,使用for循环可以顺序访问,速度较快;使用foreach会比for循环稍慢一些。

    对于linkedlist,是单链表,使用for循环每次都要从第一个元素读取next域来读取,速度非常慢;使用foreach可以直接读取当前结点,数据较快;

    举个栗子:

    顺序表 a[3]

      用for循环,从a[0]开始直接读到元素,接着直接读a[1];(顺序表的优点,随机访问)

      用foreach,  得到a[0]-a[2]的全部地址放入队列,按顺序取出队里里的地址来访问元素;

    单链表 b[3]

      用for循环,从a[0]开始读元素、然后通过a[0]的next读到a[1]元素、通过a[0]的next的next读到a[2]元素,以此类推,性能影响较大,慎用!

      用foreach, 得到a[0]-a[2]的全部地址放入队列,按顺序取出队里里的地址来访问元素;

  • 相关阅读:
    Open live Writer
    python两则99乘法表
    更改jupyter-notebook启动时的默认目录
    在内容中插入代码,返回进行编辑时,有无法跳出代码区的情况
    关于jupyter notebook密码设置
    nginx+zuul
    spring-cloud 服务优雅下线
    java.util.ConcurrentModificationException异常排查
    使用bitset实现毫秒级查询(二)
    使用bitset实现毫秒级查询
  • 原文地址:https://www.cnblogs.com/chenhao0302/p/9200863.html
Copyright © 2020-2023  润新知