Java中List集合的遍历实例详解

 更新时间:2019年04月24日 11:24:18   作者:QH_JAVA  
这篇文章主要介绍了Java中List集合遍历实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

 一、对List的遍历有三种方式  

 List<String>  list  =  new  ArrayList<String>();  
  list.add("testone");  
  list.add(“testtwo”);  
  ...  

第一种:

for(Iterator<String>  it  =  list.iterator();  it.hasNext();  )  {  
    ....  
  } 

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

第二种:  

 for(String  data  :  list)  {  
    .....  
  } 

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

第三种:  

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

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

二、测试实例

package com.inspur.Test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

/**
 *@author WHD
 *2015-3-5
 */
@SuppressWarnings("unused")
public class MapTest {
    private static List<String> list= new ArrayList<String>();
    public static void main(String[]args){
        MapTest  mapTest = new  MapTest();
        mapTest.initList(list);
        mapTest.foreach(list);
        mapTest.forlist(list);
        mapTest.iteratorList(list);
    }
    
    //list 集合中添加10万条数据
    public List initList(List<String> list){
        int i=0;
        int num=6000000;
        for(i=0;i<num;i++){
            list.add("list"+i);
        }
        return list;
    }
    //list 集合遍历 foreach
    
    public void  foreach(List<String> list){
        long start= System.currentTimeMillis();
        for(String data:list){
            String value=data;
        }
        
        long end=System.currentTimeMillis();
        long count=end-start;
        System.out.println("foreach 循环时间"+count);
    }
    // list集合遍历  for
    public void forlist(List<String> list){
        long start=System.currentTimeMillis();
        int i=0;
        for( i=0;i<list.size();i++){
            String value=list.get(i);
        }
        long end=System.currentTimeMillis();
        long count=end-start;
        System.out.println("for list.size() 遍历时间"+count);
    }
    
    // Iterator 遍历循环
    public void iteratorList(List<String> list){
        long start= System.currentTimeMillis();
        for(Iterator<String>  it=list.iterator();it.hasNext();){
            String value=it.next();
        }
        long end=System.currentTimeMillis();
        long count=end-start;
        System.out.println("iterator 遍历时间"+count);
    }

}


三、测试结果:

(1)、第一次

foreach  遍历时间:55
for list.size()遍历时间:47
iterator 遍历时间:51

(2)、第二次

foreach  遍历时间:54
for list.size()遍历时间:44
iterator 遍历时间:50

(3)、第三次

foreach  遍历时间:48
for list.size()遍历时间:43
iterator 遍历时间:44

从测试的结果我们可以明显的看到效率了!

以上所述是小编给大家介绍的Java中List集合遍历详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Java递归模糊查询文件实例代码

    Java递归模糊查询文件实例代码

    递归算法是一种直接或间接地调用自身的算法,在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解,这篇文章主要给大家介绍了关于Java递归模糊查询文件的相关资料,需要的朋友可以参考下
    2021-11-11
  • 详解SpringMVC中的异常处理

    详解SpringMVC中的异常处理

    这篇文章主要介绍了SpringMVC中的异常处理的相关资料,帮助大家更好的理解和学习使用SpringMVC,感兴趣的朋友可以了解下
    2021-03-03
  • Java并发计数器的深入理解

    Java并发计数器的深入理解

    这篇文章主要给大家介绍了关于Java并发计数器的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • Swagger注解-@ApiModel和@ApiModelProperty的用法

    Swagger注解-@ApiModel和@ApiModelProperty的用法

    这篇文章主要介绍了Swagger注解-@ApiModel和@ApiModelProperty的用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Java实现JDBC向数据库批量插入

    Java实现JDBC向数据库批量插入

    在Java项目中可能会出现大量向数据库中插入的情况,本文主要介绍了Java实现JDBC向数据库批量插入,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • idea中定时及多数据源配置方法

    idea中定时及多数据源配置方法

    因项目要求,需要定时从达梦数据库中取数据,并插入或更新到ORACLE数据库中,这篇文章主要介绍了idea中定时及多数据源配置方法,需要的朋友可以参考下
    2023-12-12
  • 详解Java中雪花算法的实现

    详解Java中雪花算法的实现

    雪花算法是一种分布式的id生成算法。原理是将long分成若干个区段分别管理。本文将利用Java简单的实现雪花算法,感兴趣的可以了解一下
    2022-12-12
  • SpringBoot中的健康检查详解

    SpringBoot中的健康检查详解

    这篇文章主要介绍了SpringBoot中的健康检查详解,健康检查是一种用来确保应用程序和其所依赖的服务的状态正常的机制,在本文中,我们将探讨SpringBoot中的健康检查是什么以及如何使用它来监视应用程序的状态,需要的朋友可以参考下
    2023-07-07
  • Java中的内存泄漏

    Java中的内存泄漏

    这篇文章主要介绍了Java中的内存泄漏的相关资料,帮助大家更好的理解和学习Java,感兴趣的朋友可以了解下
    2020-11-11
  • String与Blob互转和file文件与Blob互转方式

    String与Blob互转和file文件与Blob互转方式

    这篇文章主要介绍了String与Blob互转和file文件与Blob互转方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05

最新评论