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

List    list    =    new    ArrayList();

list.add("testone");

list.add(“testtwo”);

...

第一种:

for(Iterator    it    =    list.iterator();    it.hasNext();    )    {

....

}

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

第二种:

for(String   data    :    list)    {

.....

}

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

第三种:

for(int    i=0;    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 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

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

java list 效率_java list三种遍历方法性能比较相关推荐

  1. java map集合遍历方法,Java的Map集合的三种遍历方法

    集合的一个很重要的操作---遍历,学习了三种遍历方法,三种方法各有优缺点~~ 1. package com.myTest.MapText; import java.util.Collection; i ...

  2. java 遍历list 性能_java list三种遍历方法性能比較

    从c/c++语言转向java开发,学习java语言list遍历的三种方法,顺便測试各种遍历方法的性能,測试方法为在ArrayList中插入1千万条记录,然后遍历ArrayList,发现了一个奇怪的现象 ...

  3. Java list三种遍历方法性能比较

    从c/c++语言转向java开发,学习java语言list遍历的三种方法,顺便测试各种遍历方法的性能,测试方法为在ArrayList中插入1千万条记录,然后遍历ArrayList,发现了一个奇怪的现象 ...

  4. Java中List集合的三种遍历方式(全网最详)

    Map集合:链接: Map集合的五种遍历方式及Treemap方法 Set集合:链接: Java中遍历Set集合的三种方法 TreeSet集合:链接: Java深入了解TreeSet,和迭代器遍历方法 ...

  5. JAVA vector的遍历_谈谈vector容器的三种遍历方法

    说明:本文仅供学习交流.转载请标明出处.欢迎转载! vector容器是最简单的顺序容器,其用法相似于数组.实际上vector的底层实现就是採用动态数组.在编敲代码的过程中.经常会变量容器中的元素,那么 ...

  6. for-forEach-stream.forEach三种遍历方法

    java8新出的循环方式,在网上有大量的道友说用流的方式效率反而更低了. 大量的结论表明,这种方式只是语法糖(for-forEach-stream三种遍历方法执行效率比较与选用思考 - ZZY1078 ...

  7. ArrayList的三种遍历方法

    ArrayList的三种遍历方法 import java.util.*; public class Test{ public static void main(String[] args) { Lis ...

  8. for-forEach-stream三种遍历方法执行效率比较与选用思考

    文章目录 想法 设计 实现 结论 建议 想法   在JDK-8中,新添加了很多的方法,比如说现在我所说的forEach,该方法是用于集合遍历的,其方式相当于传统的for循环遍历方式,只是与其不同之处就 ...

  9. java list三种遍历方法性能比較

    从c/c++语言转向java开发,学习java语言list遍历的三种方法,顺便測试各种遍历方法的性能,測试方法为在ArrayList中插入1千万条记录,然后遍历ArrayList,发现了一个奇怪的现象 ...

  10. Java中Map集合的三种遍历方式

    文章目录 Map集合的遍历方式 Map集合的遍历方式一: 键找值 Map集合的遍历方式二: 键值对 Map集合的遍历方式三: Lambda Map集合的遍历方式 Map集合的遍历方式有3种: 方式一: ...

最新文章

  1. npm导入bootstrap_vue cli3.0如何通过npm引入jquery和bootstrap?
  2. 来给IDEA换个酷炫的主题吧!这几个都有点哇塞啊!
  3. Mysql 查询一天中每半小时记录的数量
  4. mysql数据库备份工具expdb,使用expdp完成自动备份数据库案例以及遇到的问题
  5. Django中models利用ORM对Mysql 进行查表的语句(多个语句)
  6. [CareerCup] 1.6 Rotate Image 翻转图像
  7. python教材目录,python 目录
  8. SQL Server 2005中的分区表(四):删除(合并)一个分区
  9. 安装mysql程序运行出错_如何解决mysql安装后.net程序运行出错的问题
  10. 关于ultrawebgrid的列的样式
  11. paip.取当天记录的方法sql跟hql hibernate
  12. 联想笔记本prtsc不能截图_Win10系统下怎么截屏
  13. STM32——EMWIN 字体(二十)
  14. sync.Pool 使用
  15. 双月学习OKR(67月)
  16. 2021Java不死我不倒,吊打面试官系列!
  17. Win11宽带连接错误651如何解决?
  18. ubuntu安装cad快速看图linux版
  19. SAP中通过定制开发在寄售结算MRKO中实现发票校验功能
  20. 多电脑共享键鼠,传输数据,共享剪贴板

热门文章

  1. bootstrap css div布局,从css源码理解bootstrap布局容器和栅格系统
  2. html怎么插入jq背景,HTML 全屏背景的方法
  3. python中基础知识_Python中的一些基础知识
  4. 2021-02-02 安卓闪退问题
  5. c语言乘法除法结合律,有关C语言运算符优先级和结合律的思考
  6. c语言side输出空心正方形,回溯法--正方形(蛋糕切分)问题
  7. 通过dll来引用webservice的方法(.net)
  8. Apache JMeter 5.1.1 发布,压力测试工具
  9. Mysql InnoDB行锁实现方式
  10. CentOS 安装rz和sz命令