详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt224

我们常用for循环,foeach,while等作为循环list或者数组的方式,但是大家有没有真正考虑过他们之间的性能差异呢,以下我来给大家分析下:

List<String> list = new ArrayList<String>();

for(int i=0;i<5000000;i++) {

list.add( "grefr");

}

long time1 = System.nanoTime();

for(int i = 0;i<5000000;i++) {

String str = list.get(i);

}

long time2 = System.nanoTime();

System. out.println("for循环使用时间" +(time2-time1));

long time3 = System.nanoTime();

for(String str:list) {

}

long time4 = System.nanoTime();

System. out.println("foreach循环使用时间" +(time4-time3));

long time5 = System. nanoTime();

Iterator<String> iterator = list.iterator();

while(iterator.hasNext()) {

String str = iterator.next();

}

long time6 = System.nanoTime();

System. out.println("迭代器循环使用时间" +(time6-time5 ));

long time7 = System.nanoTime();

for( Iterator<String> iterator2 = list.iterator();iterator2.hasNext();) {

String str = iterator2.next();

}

long time8 = System.nanoTime();

System. out.println("for改装的迭代器循环使用时间" +(time8-time7));

long time9 = System. nanoTime();

int i = -1;

while(i++<list.size()-1) {

String str = list.get(i);

}

long time10 = System. nanoTime();

System. out.println("while循环使用时间" +(time10-time9));

这段代码执行的结果是:

for循环使用时间           84835391

foreach循环使用时间       171477032

迭代器循环使用时间         175461419

for改装的迭代器循环使用时间 168014315

while循环使用时间         112974805

很显然,在遍历List时for循环的遍历效率要更高

但是在下面的遍历中,

int num = 1000000;

long time1 = System.nanoTime();

for(int i = 0;i<num;i++ ) {

}

long time2 = System.nanoTime();

System. out.println(time2-time1);

long time3 = System.nanoTime();

while(num-->0) {

}

long time4 = System.nanoTime();

System. out.println(time4-time3);

运行结果如下:

for循环执行时间为:  7163405

while循环执行时间为:3595701

java 比较几种常见循环方式的优劣的更多相关文章

  1. java讲讲几种常见的排序算法(二)

    java讲讲几种常见的排序算法(二) 目录 java讲讲几种常见的排序算法(一) java讲讲几种常见的排序算法(二) 堆排序 思路:构建一个小顶堆,小顶堆就是棵二叉树,他的左右孩子均大于他的根节点( ...

  2. java讲讲几种常见的排序算法

    java讲讲几种常见的排序算法(一) 目录 java讲讲几种常见的排序算法(一) java讲讲几种常见的排序算法(二) 以数组array={6,3,20,8,15,1}为例 冒泡排序 思路:从第0个到 ...

  3. Linux下几种常见压缩方式测试对比

    目录 Linux下几种常见压缩方式测试对比 参考 简介 测试 总结 Linux下几种常见压缩方式测试对比

  4. Redis 的几种常见使用方式

    常见使用方式 Redis 的几种常见使用方式包括: Redis 单副本 Redis 多副本(主从) Redis Sentinel(哨兵) Redis Cluster Redis 自研 各种使用方式的优 ...

  5. 【Java面试】Java有几种文件拷贝方式,哪一种效率最高?

    "Java有几种文件拷贝方式,哪一种效率最高?" 这个问题是京东一面的时候,针对4年经验的同学的一个面试题. 大家好,我是Mic,一个工作了14年的Java程序员. 关于这个问题的 ...

  6. java中的线程(2):如何正确停止线程之3种常见停止方式

    1.常见停止方式 自定义线程,其中含退出标志位,在run中判断它. 使用interrupt()方法中断线程 使用stop方法暴力终止(已经弃用) 2.使用标志位 class TestThread ex ...

  7. java中的线程(2):如何正确停止线程之2种常见停止方式

    1.常见停止方式 结束run函数,run中含退出标志位. 使用interrupt()方法中断线程 使用stop方法暴力终止(已经弃用) 2.结束run class TestThread extends ...

  8. java之 ------ 几种常见的简单设计模式

    前言: 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.用于解决特定环境下.反复出现的特定问题的解决方式.使用设计模式是为了可重用代码.让代 ...

  9. Java中9种常见的CMS GC问题分析与解决

    1. 写在前面 | 本文主要针对 Hotspot VM 中"CMS + ParNew"组合的一些使用场景进行总结.重点通过部分源码对根因进行分析以及对排查方法进行总结,排查过程会省 ...

随机推荐

  1. jdk 环境变量配置方法总结

    全部修改在用户变量/系统变量 系统变量→新建 JAVA_HOME 变量 .变量值填写jdk的安装目录(本人是 D:\java\Java\jdk1.8.0_72) 系统变量→寻找 Path 变量→编辑在 ...

  2. matlab怎么查看已安装哪些工具箱和…

    问题描述:matlab怎么查看已安装哪些工具箱和它们相应的版本 解决方法:在命令行里敲击der,回车 效果:

  3. 33. leetcode 268. Missing Number

    Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missin ...

  4. mybatis 详解(三)------入门实例(基于注解)

    1.创建MySQL数据库:mybatisDemo和表:user 详情参考:mybatis 详解(二)------入门实例(基于XML) 一致 2.建立一个Java工程,并导入相应的jar包,具体目录如 ...

  5. Fiddler基础使用二之捕获手机应用https请求

    Fiddler是一款非常流行并且实用的http抓包工具,它的原理是在本机开启了一个http的代理服务器,然后它会转发所有的http请求和响应, 因此,它比一般的firebug或者是chrome自带的抓 ...

  6. ABP+AdminLTE+Bootstrap Table权限管理系统第五节--WBEAPI及SwaggerUI

    一,Web API ABP的动态WebApi实现了直接对服务层的调用(其实病没有跨过ApiController,只是将ApiController公共化,对于这一点的处理类似于MVC,对服务端的 调用没 ...

  7. jQuery基础知识总结二

     * DOM操作 *1 基本操作 * html() - 等价于innerHTML属性 * text() - 等价于textContent属性 * val() - 等价于value属性 * attr() ...

  8. connect by prior 递归算法

    http://blog.163.com/xxciof/blog/static/7978132720095193113752/ oracle中 connect by prior 递归算法 Oracle中 ...

  9. LR的响应时间与使用IE所感受时间不一致的讨论

    在做性能测试时,有时碰到这样一种情况,使用性能工具LR测试出来的响应时间比实际使用IE感受到的时间要长,例如,实际使用IE打开一个系统时只需要1~2秒,而使用LR跑一个用户所得出的结果可能是8秒.10 ...

  10. Python使用PDFMiner解析PDF

    近期在做爬虫时有时会遇到网站只提供pdf的情况,这样就不能使用scrapy直接抓取页面内容了,只能通过解析PDF的方式处理,目前的解决方案大致只有pyPDF和PDFMiner.因为据说PDFMiner ...