Java中List集合的遍历

来源:互联网 发布:软件研发管理工具 编辑:程序博客网 时间:2024/04/30 05:42

核心
1、Java中list集合遍历的方法有
2、3种方法的实现过程
3、基于这3种方法的测试
第一种:

  while(it.hasNext()){           String value=(String) it.next();       }

这种方式在循环执行过程中会进行数据锁定, 性能稍差, 同时,如果你想在寻欢过程中去掉某个元素,只能调用it.remove方法, 不能使用list.remove方法, 否则一定出现并发访问的错误.

第二种:

 for(String ls:list){           String value=ls;       }

内部调用第一种, 换汤不换药, 因此比Iterator 慢,这种循环方式还有其他限制, 不建议使用它。

第三种:

  for(int i=0;i<list.size();i++){           String value=list.get(i);       }

内部不锁定, 效率最高, 但是当写多线程时要考虑并发操作的问题。

2、代码实现

package Sort;import java.util.ArrayList;import java.util.List;import java.util.Iterator;public class ForList {    private static List<String> list =new ArrayList<String>();    public static void main(String[] args) {    int num=1000,data=10000000;     long iterator=0,forls = 0,forsz=0;    ForList ls=new ForList();    ls.getList(data);    System.out.println("序号|数值|Iterator|forlist|forsize");    for(int i=1;i<=num;i++){        Runtime.getRuntime().gc();        iterator=ls.IteratorList();        forls=ls.forlist();        forsz=ls.forsize();        System.out.println(i+"|"+data+"|"+iterator+"|"+forls+"|"+forsz);    }    }    public void getList(int num){        for (int i=0;i<num;i++){            list.add("list"+i);        }    }   public long IteratorList(){       Runtime.getRuntime().gc();       long start=System.currentTimeMillis();       Iterator it=list.iterator();       while(it.hasNext()){           String value=(String) it.next();       }       long end=System.currentTimeMillis();       return end-start;   }   public long forsize(){       Runtime.getRuntime().gc();       long start=System.currentTimeMillis();       for(int i=0;i<list.size();i++){           String value=list.get(i);       }       long end=System.currentTimeMillis();       return end-start;   }   public long forlist(){       Runtime.getRuntime().gc();       long start=System.currentTimeMillis();       for(String ls:list){           String value=ls;       }       long end=System.currentTimeMillis();       return end-start;   }}

3、方法测试和比对
1、基于整形的list进行了100次遍历,得到的结论是,forsize这个方法比其他2个方法的平均值要小,其方差值也要小
这里写图片描述

2、基于String类型的list进行了100次遍历,得到的结论是,forsize这个方法比其他2个方法的平均值要小,其方差值也要小
这里写图片描述

原创粉丝点击