zoukankan      html  css  js  c++  java
  • List 三种遍历的方法

    学习java语言list遍历的三种方法,顺便测试各种遍历方法的性能,测试方法为在ArrayList中插入1千万条记录,然后遍历ArrayList,发现了一个奇怪的现象,测试代码如下:

    package com.hisense.tiger.list;

    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;

    public class ListTest {
    public static void main(String[] args)
    {
    List<String> list = new ArrayList<String>();
    long t1,t2;
    for(int j = 0; j < 10000000; j++)
    {
    list.add("aaaaaa" + j);
    }
    System.out.println("List first visit method:");
    t1=System.currentTimeMillis();
    for(String tmp:list)
    {
    //System.out.println(tmp);
    }
    t2=System.currentTimeMillis();
    System.out.println("Run Time:" + (t2 -t1) + "(ms)");
    System.out.println("List second visit method:");

    t1=System.currentTimeMillis();
    for(int i = 0; i < list.size(); i++)
    {
    list.get(i);
    //System.out.println(list.get(i));
    }
    t2=System.currentTimeMillis();
    System.out.println("Run Time:" + (t2 -t1) + "(ms)");

    System.out.println("List Third visit method:");
    Iterator<String> iter = list.iterator();

    t1=System.currentTimeMillis();
    while(iter.hasNext())
    {
    iter.next();
    //System.out.println(iter.next());
    }
    t2=System.currentTimeMillis();
    System.out.println("Run Time:" + (t2 -t1) + "(ms)");

    System.out.println("Finished!!!!!!!!");


    }
    }

    测试结果如下:

    List first visit method:
    Run Time:170(ms)
    List second visit method:
    Run Time:10(ms)
    List Third visit method:
    Run Time:34(ms)
    Finished!!!!!!!!

        测试的结论很奇怪,第一种方法是java语言支持的新语法,代码最简洁,但是在三种方法中,性能确是最差的,取size进行遍历性能是最高的,求牛人解释?

    回答:

    ArrayList底层是采用数组来保存数据的,对于访问数组里的数据来说,直接采用数组索引当然是最快的了,相当于直接从内存读取数据,其他的两种迭代方式,实际上都是一种,即iterator,foreach包装了一下;iterator遍历最终还是要通过索引来访问数据,源码中对应的get方法了,但是除此之外,还要经过其他的检查,所以耗时较多,但还在一个数量及上

  • 相关阅读:
    ORACLE-游标数
    Hibernate-原生SQL查询
    超链接无效
    首页统计脚本
    About_datebase
    PHP的学习--cookie和session--来自copy_02
    终于懂浏览器里面的cookies和session了
    About-PHP-02
    php链接数据库
    PHP 操作MySQL———来自copy
  • 原文地址:https://www.cnblogs.com/zhangzhifeng/p/4308194.html
Copyright © 2011-2022 走看看