java 遍历list 性能_java list三种遍历方法性能比較
从c/c++语言转向java开发,学习java语言list遍历的三种方法,顺便測试各种遍历方法的性能,測试方法为在ArrayList中插入1千万条记录,然后遍历ArrayList,发现了一个奇怪的现象,測试代码例如以下:
package com.hisense.tiger.list;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListTest {
public static void main(String[] args)
{
List list = new ArrayList();
long t1,t2;
for(int j = 0; j < 10000000; j++)
{
list.add("aaaaaa" + j);
}
System.out.println("List first visit method:");
t1=System.currentTimeMillis();
for(String tmp:list)
{
//System.out.println(tmp);
}
t2=System.currentTimeMillis();
System.out.println("Run Time:" + (t2 -t1) + "(ms)");
System.out.println("List second visit method:");
t1=System.currentTimeMillis();
for(int i = 0; i < list.size(); i++)
{
list.get(i);
//System.out.println(list.get(i));
}
t2=System.currentTimeMillis();
System.out.println("Run Time:" + (t2 -t1) + "(ms)");
System.out.println("List Third visit method:");
Iterator iter = list.iterator();
t1=System.currentTimeMillis();
while(iter.hasNext())
{
iter.next();
//System.out.println(iter.next());
}
t2=System.currentTimeMillis();
System.out.println("Run Time:" + (t2 -t1) + "(ms)");
System.out.println("Finished!!!!!!!!");
}
}
測试结果例如以下:
List first visit method:
Run Time:170(ms)
List second visit method:
Run Time:10(ms)
List Third visit method:
Run Time:34(ms)
Finished!!!!!!!!
測试的结论非常奇怪,第一种方法是java语言支持的新语法,代码最简洁,可是在三种方法中,性能确是最差的,取size进行遍历性能是最高的,求牛人解释?
java 遍历list 性能_java list三种遍历方法性能比較相关推荐
- java源代码实例倒计时_Java倒计时三种实现方式代码实例
写完js倒计时,突然想用java实现倒计时,写了三种实现方式 一:设置时长的倒计时: 二:设置时间戳的倒计时: 三:使用java.util.Timer类实现的时间戳倒计时 代码如下: package ...
- java random产生随机数_java的三种随机数生成方式,必掌握
随机数的产生在一些代码中很常用,也是我们必须要掌握的.而java中产生随机数的方法主要有三种: 第一种:new Random() 第二种:Math.random() 第三种:currentTimeMi ...
- java反射效率对比_Java反射三种方式的效率对比
1 使用field long start = System.nanoTime(); Field[] fields = CallCount.class.getDeclaredFields(); for ...
- JAVA解决生产消费者_Java常用三种方式解决生产者消费者问题(详细)
package test; /** * Synchronized 版本解决生产者消费者 * wait() / notify()方法 */ import java.util.LinkedList; im ...
- Java——程序包不存在【三种解决方法】
目录 一.问题描述 二.解决方案 方法一:maven包管理的clean方法 方法二:清理缓存 方法三:设置配置 三.结语 一.问题描述 报错:xxx程序包不存在 二.解决方案 方法一:ma ...
- 数据结构与算法:已知二叉树两种遍历序列,求第三种遍历序列
在笔试题目中经常碰到此类题目,已知先序遍历序列和中序遍历序列,求后序序列或者已知中序序列和后序序列,求先序遍历序列.其中若已知先序序列和后序序列,无法唯一确定一棵树,所以就无法得知中序序列. 1.已知 ...
- java和javac版本不一致(三种解决方法)
在下载java和jdk时常常出现问题如下,javac编译能过,java运行不过,出现下面提示 然后查一下java和javac的版本如下 发现两个版本不一样,解决方法如下: 1.配置坏境变量,把关于ja ...
- 重温数据结构:二叉树的常见方法及三种遍历方式 Java 实现
读完本文你将了解到: 什么是二叉树 Binary Tree 两种特殊的二叉树 满二叉树 完全二叉树 满二叉树 和 完全二叉树 的对比图 二叉树的实现 用 递归节点实现法左右链表示法 表示一个二叉树节点 ...
- 树的三种遍历原理及实现
树的三种遍历 一棵树的三种遍历方式:先序遍历,中序遍历,后序遍历. 前中后三种顺序其实指的是根的顺序. 先序遍历:根节点.左子树.右子树 中序遍历:左子树.根节点.右子树 后序遍历:左子树.右子树.根 ...
最新文章
- python3 json安装_python3下JSON和JsonPath
- 北大OJ百练——4073:最长公共字符串后缀(C语言)
- 如何查看哪些参数被新版本抛弃了?
- DataTables中设置某些列不进行排序
- 编写你的第一个 Django 应用,第 1 部分
- php文件上传错误代码
- c语言程序图片马赛克,关于c语言的图像均值滤波 请问大神为什么我的结果都是马赛克...
- C/C++混淆点-转义字符
- Flex布局演示01
- 【蓝桥杯嵌入式】【STM32】12_2020_第十一届_蓝桥杯_嵌入式设计与开发项目_省赛
- 定时监控服务,告警,并启动服务
- 6款主流PDF编辑器测试,快来看看哪一款最适合你吧
- element-ui 引用阿里云矢量图不显示图标,显示的为小方框
- PHP+H5全栈工程师培训视频教程
- 微信的那个老外产品经理,又写了一篇《中国移动应用设计趋势》
- 此时不应有 \Common
- FaceBoxes: A CPU Real-time Face Detector with High Accuracy
- 重带电粒子的能量歧离(energy straggling)
- 动态折线图,制作原来是这么简单
- python 求解一元二次方程组
热门文章
- QIIME 2教程. 15样品分类和回归q2-sample-classifier(2020.11)
- ggThemeAssist:鼠标调整ggplot2主题,不用再记这些代码啦!
- Microbiome:简单套路发高分文章--杨树内生和根际微生物组结构
- R语言使用fs包的file_copy函数、dir_copy函数、link_copy函数将文件、目录、超链接从一个位置拷贝(copy)到另一个位置
- 机器学习数据预处理之缺失值:固定值填充
- python使用imbalanced-learn的RandomOverSampler方法进行上采样处理数据不平衡问题
- 密度聚类算法DBSCAN实战及可视化分析
- python实现字典遍历稳定有序使用collection包OrderedDict
- tensorflow.python.framework.errors_impl.InvalidArgumentError: 2 root error(s) found.
- R语言字符串处理函数