java list 效率_java list三种遍历方法性能比较
一、对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三种遍历方法性能比较相关推荐
- java map集合遍历方法,Java的Map集合的三种遍历方法
集合的一个很重要的操作---遍历,学习了三种遍历方法,三种方法各有优缺点~~ 1. package com.myTest.MapText; import java.util.Collection; i ...
- java 遍历list 性能_java list三种遍历方法性能比較
从c/c++语言转向java开发,学习java语言list遍历的三种方法,顺便測试各种遍历方法的性能,測试方法为在ArrayList中插入1千万条记录,然后遍历ArrayList,发现了一个奇怪的现象 ...
- Java list三种遍历方法性能比较
从c/c++语言转向java开发,学习java语言list遍历的三种方法,顺便测试各种遍历方法的性能,测试方法为在ArrayList中插入1千万条记录,然后遍历ArrayList,发现了一个奇怪的现象 ...
- Java中List集合的三种遍历方式(全网最详)
Map集合:链接: Map集合的五种遍历方式及Treemap方法 Set集合:链接: Java中遍历Set集合的三种方法 TreeSet集合:链接: Java深入了解TreeSet,和迭代器遍历方法 ...
- JAVA vector的遍历_谈谈vector容器的三种遍历方法
说明:本文仅供学习交流.转载请标明出处.欢迎转载! vector容器是最简单的顺序容器,其用法相似于数组.实际上vector的底层实现就是採用动态数组.在编敲代码的过程中.经常会变量容器中的元素,那么 ...
- for-forEach-stream.forEach三种遍历方法
java8新出的循环方式,在网上有大量的道友说用流的方式效率反而更低了. 大量的结论表明,这种方式只是语法糖(for-forEach-stream三种遍历方法执行效率比较与选用思考 - ZZY1078 ...
- ArrayList的三种遍历方法
ArrayList的三种遍历方法 import java.util.*; public class Test{ public static void main(String[] args) { Lis ...
- for-forEach-stream三种遍历方法执行效率比较与选用思考
文章目录 想法 设计 实现 结论 建议 想法 在JDK-8中,新添加了很多的方法,比如说现在我所说的forEach,该方法是用于集合遍历的,其方式相当于传统的for循环遍历方式,只是与其不同之处就 ...
- java list三种遍历方法性能比較
从c/c++语言转向java开发,学习java语言list遍历的三种方法,顺便測试各种遍历方法的性能,測试方法为在ArrayList中插入1千万条记录,然后遍历ArrayList,发现了一个奇怪的现象 ...
- Java中Map集合的三种遍历方式
文章目录 Map集合的遍历方式 Map集合的遍历方式一: 键找值 Map集合的遍历方式二: 键值对 Map集合的遍历方式三: Lambda Map集合的遍历方式 Map集合的遍历方式有3种: 方式一: ...
最新文章
- npm导入bootstrap_vue cli3.0如何通过npm引入jquery和bootstrap?
- 来给IDEA换个酷炫的主题吧!这几个都有点哇塞啊!
- Mysql 查询一天中每半小时记录的数量
- mysql数据库备份工具expdb,使用expdp完成自动备份数据库案例以及遇到的问题
- Django中models利用ORM对Mysql 进行查表的语句(多个语句)
- [CareerCup] 1.6 Rotate Image 翻转图像
- python教材目录,python 目录
- SQL Server 2005中的分区表(四):删除(合并)一个分区
- 安装mysql程序运行出错_如何解决mysql安装后.net程序运行出错的问题
- 关于ultrawebgrid的列的样式
- paip.取当天记录的方法sql跟hql hibernate
- 联想笔记本prtsc不能截图_Win10系统下怎么截屏
- STM32——EMWIN 字体(二十)
- sync.Pool 使用
- 双月学习OKR(67月)
- 2021Java不死我不倒,吊打面试官系列!
- Win11宽带连接错误651如何解决?
- ubuntu安装cad快速看图linux版
- SAP中通过定制开发在寄售结算MRKO中实现发票校验功能
- 多电脑共享键鼠,传输数据,共享剪贴板
热门文章
- bootstrap css div布局,从css源码理解bootstrap布局容器和栅格系统
- html怎么插入jq背景,HTML 全屏背景的方法
- python中基础知识_Python中的一些基础知识
- 2021-02-02 安卓闪退问题
- c语言乘法除法结合律,有关C语言运算符优先级和结合律的思考
- c语言side输出空心正方形,回溯法--正方形(蛋糕切分)问题
- 通过dll来引用webservice的方法(.net)
- Apache JMeter 5.1.1 发布,压力测试工具
- Mysql InnoDB行锁实现方式
- CentOS 安装rz和sz命令