遍历List的三种方法

来源:互联网 发布:安阳日报社 网络投稿 编辑:程序博客网 时间:2024/06/04 18:49
遍历一个List有哪些不同的方式?
如下代码,分别为三种方法
package com.suwu.listtest;import java.util.List;import java.util.ArrayList;import java.util.Iterator;public class ListTest{    public static void main(String[] args )    {      List<Integer> list=new ArrayList<Integer>();      list.add(new Integer(100));      list.add(new Integer(200));      list.add(new Integer(54));      list.add(new Integer(10242));      //遍历方式1---while(it.hasNext())      System.out.println("遍历方式1--while(it.hasNext())");      Iterator<Integer> it=list.iterator();      while(it.hasNext())      {         System.out.println(it.next());      }      //遍历方式2--get(i)      System.out.println("遍历方式2--get(i)");      for(int i=0;i<list.size();i++)      {        System.out.println(list.get(i));      }       //遍历方式3--Object o      System.out.println("遍历方式3--Object o");      for(Object o:list)      {        System.out.println(o);      }    }}

如下结果:

既然知道了遍历的方式,那么下面我们就进行效率的测试,如下代码:

package com.prog;import java.util.List;import java.util.ArrayList;import java.util.Iterator;public class ListTestEffic{public static void main(String[] args ){  List<Integer> list=new ArrayList<Integer>();  //添加数据  long storeStart1=System.currentTimeMillis();  for(int i=0;i<10000000;i++)  {  list.add(i);  }  long storeEnd1=System.currentTimeMillis();  long d= storeEnd1-storeStart1;  System.out.println("添加数据的时间:"+d);  //遍历方式1---while(it.hasNext())  System.out.println("遍历方式1--while(it.hasNext())");  long storeStart2=System.currentTimeMillis();  Iterator<Integer> it=list.iterator();  while(it.hasNext())  {     if(it.next()==9999)System.out.println("选择结果是9999");  }  long storeEnd2=System.currentTimeMillis();   System.out.println(storeEnd2-storeStart2);  //遍历方式2--get(i)  System.out.println("遍历方式2--get(i)");  long storeStart3=System.currentTimeMillis();  for(int i=0;i<list.size();i++)  { if(list.get(i)==9999)System.out.println("选择结果是9999");  }  long storeEnd3=System.currentTimeMillis();   System.out.println(storeEnd3-storeStart3);   //遍历方式3--for(Integer i)  System.out.println("遍历方式3--Object o");    long storeStart4=System.currentTimeMillis();  for(Integer i:list)  {        if(i==9999)System.out.println("选择结果是9999");  }   long storeEnd4=System.currentTimeMillis();   System.out.println(storeEnd4-storeStart4);}}

运行后我们能够看到如下结果:

运行结果1


运行结果2


由运行结果我们能够看到,for(Object o)方式,即增强for循环的效率最慢,其次为迭代器it.hasNext(),效率最高的为使用list.size()获取list的大小,然后使用get(i)的方式获取值



1 0