Java List遍历的3种方法

1. Iterator遍历list集合

List list=new ArrayList();

list.add("java1");

list.add("java2");

list.add("java3");

for(Iteratorit = list.iterator(); it.hasNext(); )

{

....

}

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

2. for循环遍历

List list=new ArrayList();

list.add("java1");

list.add("java2");

list.add("java3");

for(String data : list)

{

....

}

比Iterator 慢,这种循环方式还有其他限制, 不建议使用它。

3. for循环另外一种方法遍历

List list=new ArrayList();

list.add("java1");

list.add("java2");

list.add("java3");

for(int i=0; i

{

....

}

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

3种list遍历方法性能测试

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 list= new ArrayList();

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 list){

int i=0;

int num=6000000;

for(i=0;i

list.add("list"+i);

}

return list;

}

//list 集合遍历 foreach

public void  foreach(List 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 list){

long start=System.currentTimeMillis();

int i=0;

for( i=0;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 list){

long start= System.currentTimeMillis();

for(Iterator  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

从测试的结果我们可以明显的看到第3种效率最高!

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。

java list for循环_Java List遍历的3种方法相关推荐

  1. java 遍历方法_Java ArrayList遍历的3种方法

    首页 > 基础教程 > 集合框架 > ArrayList类 Java ArrayList遍历的3种方法 1. Iterator方法遍历 for(Iterator it2 = list ...

  2. java 集合遍有几种方法_Java 集合遍历的几种方法

    以下实例演示了如何遍历从Collection接口延伸出的List.Set和以键值对形式作存储的Map类型的集合,以下我们分别使用了普通for,增强型的 for ,iterator 等方式来遍历集合: ...

  3. java字符串abc反转_JAVA字符串反转的三种方法

    方法一:使用StringBuilder import java.util.Scanner; public class StrReversal { public static void main(Str ...

  4. java 结束 线程结束_Java结束线程的三种方法(爱奇艺面试)

    线程属于一次性消耗品,在执行完run()方法之后线程便会正常结束了,线程结束后便会销毁,不能再次start,只能重新建立新的线程对象,但有时run()方法是永远不会结束的.例如在程序中使用线程进行So ...

  5. java多线程传值覆盖_Java 多线程传值的四种方法

    其实大家都知道多线程传值有三种方式: 1:通过构造方法传递数据 2:通过变量和方法传递数据 3:通过回调函数传递数据 那么博主有个非常变态的需求,所以找出了第四种实现方式,先看效果图: 动态Cron4 ...

  6. java线程异步传值_Java 多线程传值的四种方法

    Java 多线程传值的四种方法 作者: sunjs 更新时间:2020-09-11 15:20:16 原文链接 其实大家都知道多线程传值有三种方式: 1:通过构造方法传递数据 2:通过变量和方法传递数 ...

  7. java 获取区间随机数_Java获取随机数的3种方法

    主要介绍了Java获取随机数的3种方法,主要利用random()函数来实现 方法1 (数据类型)(最小值+Math.random()*(最大值-最小值+1))例: (int)(1+Math.rando ...

  8. java 获取区间随机数_Java获取随机数的几种方法

    随机数在实际中使用很广泛,比如要随即生成一个固定长度的字符串.数字.或者随即生成一个不定长度的数字.或者进行一个模拟的随机选择等等.Java提供了最基本的工具,可以帮助开发者来实现这一切. 一.Jav ...

  9. java实现自动任务_Java实现定时任务的三种方法

    普通thread 这是最常见的,创建一个thread,然后让它在while循环里一直运行着,通过sleep方法来达到定时任务的效果.这样可以快速简单的实现,代码如下: public class Tas ...

最新文章

  1. 如何开始SLAM学习?
  2. WM6.1 短信模式修改
  3. UVA 11020 - Efficient Solutions(set)
  4. Msxml2.XMLHTTP Microsoft.XMLHTTP new XMLHttpRequest
  5. (chap4 Http状态码) 4XX
  6. android实现博客app,如何从零实现一个你的个人博客Android App?
  7. 圆形指示器radialIndicator控件的使用
  8. Java多线程实现-线程池
  9. 12-Python3 元组
  10. 程序设计基础基于C语言(第二版),程序设计基础_基于C语言(第2版)__课后习题参考答案.doc...
  11. vb.net 教程 11-1 打印组件 1 基础
  12. springBoot集成Activiti6
  13. 查询的端口 -解决端口被占用的问题
  14. php经纬度测距,PHP根据经纬度坐标计算距离
  15. 计算机右键 管理,鼠标右键菜单管理方法?
  16. systemd.timer定时任务
  17. Python模拟键盘输入(附Python 键位码表)
  18. Radio RDS简介
  19. 【STC单片机学习】第五课:动手写代码之前必须的准备工作
  20. jQuery_删除及清空节点

热门文章

  1. C++学习(一零六)无法定位程序输入点~于动态链接库上
  2. 凡人无法打开的文件2
  3. 解决微信公众号OAuth出现40029(invalid code,不合法的oauth_code)的错误
  4. 【项目实战-MATLAB】:基于CNN的心音信号分类
  5. 《Pragmatic unit testing:in java with Junit》阅读
  6. 【Serverless】2)读懂Serverless
  7. nginx限制了你的想象?那么请用openresty
  8. ubuntu16.04.3安装MinDoc
  9. rmd中无法打开链结r_从零开始入门R语言—Rstudio下载与安装
  10. VIM插件配置——ctags/taglist/omnicppcomplete/winmanager