当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

List 遍历方式-研究

发表于: 2014-11-22   作者:cuityang   来源:转载   浏览次数:
摘要: 今天看见网上有个List 遍历方式讨论贴见 http://pda158.iteye.com/blog/2158898 第一种方式遍历每次会生成句柄 所以比较慢,改进版代码如下:   import java.util.ArrayList;  import java.util.Iterator;  import java.util.List;&nbs
今天看见网上有个List 遍历方式讨论贴见 http://pda158.iteye.com/blog/2158898

第一种方式遍历每次会生成句柄 所以比较慢,改进版代码如下:

 

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 < 800000; j++)  { 
list.add("aaaaaa" + j); 

System.out.println("List first visit method:"); 

// t1=System.currentTimeMillis(); 
// for(String tmp:list)  { 
//// tmp;
// } 
// t2=System.currentTimeMillis(); 
// System.out.println("List first visit Run Time:" + (t2 -t1) + "(ms)"); 
//
// System.out.println("List second visit method:"); 
// t1=System.currentTimeMillis(); 
// for(int i = 0; i < list.size(); i++)  { 
// String tmp = list.get(i);
// } 
// t2=System.currentTimeMillis(); 
// System.out.println("List second visit Run Time:" + (t2 -t1) + "(ms)"); 
//
System.out.println("List Third visit method:"); 
Iterator<String> iter = list.iterator(); 
t1=System.currentTimeMillis(); 
while(iter.hasNext())  { 
String tmp =iter.next(); 

t2=System.currentTimeMillis(); 
System.out.println(" List Third visit Run Time:" + (t2 -t1) + "(ms)"); 
System.out.println("Finished!!!!!!!!"); 



结果:
List first visit Run Time:35(ms)
List second visit Run Time:21(ms)
List Third visit Run Time:35(ms)

1 同样第二种方式快,因为它直接从List中取出数据
2 1,3方式差不多

解释:
1,3 方式,所以时间是差不多的
Java 中的 foreach 语法是 iterator(迭代器)的变形用法
for (Iterator<Integer> i = list.iterator(); i.hasNext();) { 

1,2 方式比较

public E next() { 
        checkForComodification(); 
        try { 
            E next = get(cursor); 
            lastRet = cursor++; 
            return next; 
        } catch (IndexOutOfBoundsException e) { 
            checkForComodification(); 
            throw new NoSuchElementException(); 
        } 
    } 


    在迭代器的  next() 方法中也出现了下标访问方式没有的 checkForComodification() 方法和 lastRet 变量赋值操作。这也就是通过 foreach 方式遍历耗时的原因。



List 遍历方式-研究

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
首先声明本文不是讨论Linq,在Framwork2.0中也不支持linq操作的,主要是记录一下List集合的使用方法
OpenCV优化:图像的遍历4种方式 分类: 算法学习2014-04-13 23:43 1312人阅读 评论(0) 收藏 举报 op
前几天在网上看见有人怀疑ArrayList,LinkedList和Vector的添加效率问题。我觉得他说的也挺有道理的
【摘要】本文主要介绍及演示了Struts迭代器(iterator)遍历List常用的4种例子,基于MyEclipse开发
大家好,今天我给大家分享的是Launcher桌面快捷图标的开发,我们都知道快捷图标有两部分组成,一部
大家好,今天我给大家分享的是Launcher桌面快捷图标的开发,我们都知道快捷图标有两部分组成,一部
前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一
查询出单个记录可以任意布局。注意:suplyArea后跟的是其对应实例的属性。 List supplyAreaList = s
9 List
List 装载元素的有序容器,List内的元素可以重复,可以通过位置定位到每一个元素或将某一元素插入到
10 List
这个是list的依赖图: 下边介绍ArrayList,Vector,LinkedList: ArrayList 和Vector 都是用数组实
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号