从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三种遍历方法性能比較相关推荐

  1. java源代码实例倒计时_Java倒计时三种实现方式代码实例

    写完js倒计时,突然想用java实现倒计时,写了三种实现方式 一:设置时长的倒计时: 二:设置时间戳的倒计时: 三:使用java.util.Timer类实现的时间戳倒计时 代码如下: package ...

  2. java random产生随机数_java的三种随机数生成方式,必掌握

    随机数的产生在一些代码中很常用,也是我们必须要掌握的.而java中产生随机数的方法主要有三种: 第一种:new Random() 第二种:Math.random() 第三种:currentTimeMi ...

  3. java反射效率对比_Java反射三种方式的效率对比

    1 使用field long start = System.nanoTime(); Field[] fields = CallCount.class.getDeclaredFields(); for ...

  4. JAVA解决生产消费者_Java常用三种方式解决生产者消费者问题(详细)

    package test; /** * Synchronized 版本解决生产者消费者 * wait() / notify()方法 */ import java.util.LinkedList; im ...

  5. Java——程序包不存在【三种解决方法】

    目录 一.问题描述 二.解决方案   方法一:maven包管理的clean方法   方法二:清理缓存   方法三:设置配置 三.结语 一.问题描述 报错:xxx程序包不存在 二.解决方案 方法一:ma ...

  6. 数据结构与算法:已知二叉树两种遍历序列,求第三种遍历序列

    在笔试题目中经常碰到此类题目,已知先序遍历序列和中序遍历序列,求后序序列或者已知中序序列和后序序列,求先序遍历序列.其中若已知先序序列和后序序列,无法唯一确定一棵树,所以就无法得知中序序列. 1.已知 ...

  7. java和javac版本不一致(三种解决方法)

    在下载java和jdk时常常出现问题如下,javac编译能过,java运行不过,出现下面提示 然后查一下java和javac的版本如下 发现两个版本不一样,解决方法如下: 1.配置坏境变量,把关于ja ...

  8. 重温数据结构:二叉树的常见方法及三种遍历方式 Java 实现

    读完本文你将了解到: 什么是二叉树 Binary Tree 两种特殊的二叉树 满二叉树 完全二叉树 满二叉树 和 完全二叉树 的对比图 二叉树的实现 用 递归节点实现法左右链表示法 表示一个二叉树节点 ...

  9. 树的三种遍历原理及实现

    树的三种遍历 一棵树的三种遍历方式:先序遍历,中序遍历,后序遍历. 前中后三种顺序其实指的是根的顺序. 先序遍历:根节点.左子树.右子树 中序遍历:左子树.根节点.右子树 后序遍历:左子树.右子树.根 ...

最新文章

  1. python3 json安装_python3下JSON和JsonPath
  2. 北大OJ百练——4073:最长公共字符串后缀(C语言)
  3. 如何查看哪些参数被新版本抛弃了?
  4. DataTables中设置某些列不进行排序
  5. 编写你的第一个 Django 应用,第 1 部分
  6. php文件上传错误代码
  7. c语言程序图片马赛克,关于c语言的图像均值滤波 请问大神为什么我的结果都是马赛克...
  8. C/C++混淆点-转义字符
  9. Flex布局演示01
  10. 【蓝桥杯嵌入式】【STM32】12_2020_第十一届_蓝桥杯_嵌入式设计与开发项目_省赛
  11. 定时监控服务,告警,并启动服务
  12. 6款主流PDF编辑器测试,快来看看哪一款最适合你吧
  13. element-ui 引用阿里云矢量图不显示图标,显示的为小方框
  14. PHP+H5全栈工程师培训视频教程
  15. 微信的那个老外产品经理,又写了一篇《中国移动应用设计趋势》
  16. 此时不应有 \Common
  17. FaceBoxes: A CPU Real-time Face Detector with High Accuracy
  18. 重带电粒子的能量歧离(energy straggling)
  19. 动态折线图,制作原来是这么简单
  20. python 求解一元二次方程组

热门文章

  1. QIIME 2教程. 15样品分类和回归q2-sample-classifier(2020.11)
  2. ggThemeAssist:鼠标调整ggplot2主题,不用再记这些代码啦!
  3. Microbiome:简单套路发高分文章--杨树内生和根际微生物组结构
  4. R语言使用fs包的file_copy函数、dir_copy函数、link_copy函数将文件、目录、超链接从一个位置拷贝(copy)到另一个位置
  5. 机器学习数据预处理之缺失值:固定值填充
  6. python使用imbalanced-learn的RandomOverSampler方法进行上采样处理数据不平衡问题
  7. 密度聚类算法DBSCAN实战及可视化分析
  8. python实现字典遍历稳定有序使用collection包OrderedDict
  9. tensorflow.python.framework.errors_impl.InvalidArgumentError: 2 root error(s) found.
  10. R语言字符串处理函数