我是靠谱客的博主 乐观金毛,最近开发中收集的这篇文章主要介绍Java中List集合的遍历,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

核心
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个方法的平均值要小,其方差值也要小
这里写图片描述

最后

以上就是乐观金毛为你收集整理的Java中List集合的遍历的全部内容,希望文章能够帮你解决Java中List集合的遍历所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部