2019独角兽企业重金招聘Python工程师标准>>>

1. 常用遍历 List 之方法

遍历 List 方法有三:

a) for (Iterator iterator = ls.iterator(); iterator.hasNext();)

b) for (int i = 0; i < ls.size(); i++)

c) for (Object object : ls) (java5+)

常用 List 实现有二:

a) java.util.ArrayList

b) java.util.LinkedList

效率如何?

2. 遍历方法之小误差验证

输出

class java.util.ArrayList
iterator-nanotime :7199195
arraylike-nanotime:1920143
foreach-nanotime :3775320
class java.util.LinkedList
iterator-nanotime :5430188
arraylike-nanotime:9148595046
foreach-nanotime :1677620

方法

private static void nanoLoop(List ls){System.out.println(ls.getClass());{ // iteratorlong b = System.nanoTime();for (Iterator iterator = ls.iterator(); iterator.hasNext();) {Object object = (Object) iterator.next();}System.out.println("iterator-nanotime :"+(System.nanoTime()-b));}{ // array-likelong b = System.nanoTime();for (int i = 0; i < ls.size(); i++) {Object object = (Object) ls.get(i);}System.out.println("arraylike-nanotime:"+(System.nanoTime()-b));}{ // foreachlong b = System.nanoTime();for (Object object : ls) {Object s = (Object) object;}System.out.println("foreach-nanotime  :"+(System.nanoTime()-b));}
}private static List initList(List ls,int count){for (int i = 0; i < count; i++) {ls.add("aaaa");}return ls;
}public static void main(String[] args) {nanoLoop(initList(new ArrayList(),10*10000));nanoLoop(initList(new LinkedList(),10*10000));
}

3. 鲁莽结论

 * 黑盒情况下:foreach > iterator > arraylike

* ArrayList :arraylike>foreach >iterator

* LinkedList:foreach >iterator >>>arraylike


4. 刨根问底

read the fk source code -_-

已有 0 人发表留言,猛击->>这里<<-参与讨论

JavaEye推荐

  • —软件人才免语言低担保 赴美带薪读研!—

转载于:https://my.oschina.net/trydofor/blog/9974

遍历 List 之效率相关推荐

  1. php遍历数组哪个效率高,PHP遍历数组的三种方法及效率对比分析

    PHP遍历数组的三种方法及效率对比分析 发布于 2015-03-04 21:55:27 | 129 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext ...

  2. php遍历数组哪个效率高,PHP遍历数组的三种方法及效率对比分析_php技巧

    本文实例分析了PHP遍历数组的三种方法及效率对比.分享给大家供大家参考.具体分析如下: 今天有个朋友问我一个问题php遍历数组的方法,告诉她了几个.顺便写个文章总结下,如果总结不全还请朋友们指出 第一 ...

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

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

  4. java几种遍历方式以及效率对比

    几种遍历方式: /*** */ package effectiveUse;import java.util.Iterator; import java.util.List;/*** @author w ...

  5. Java8常用循环遍历操作方式的效率对比

    其中 parallelStream() 为多线程遍历, 顺序会打乱, 根据适合场景使用 场景: 少量数据, 遍历数据修改操作 采用1000条数据遍历进行修改对象内容 @Testpublic void ...

  6. 二分法与简单遍历的效率比较

    //****************二分法与简单遍历法的效率比较 #include <stdio.h> #include <malloc.h> #include <tim ...

  7. java RandomAccess 遍历效率

    RandomAccess 是判断集合是否支持快速随即访问,以下是个测试用例: (转发http://jianchen.iteye.com/blog/291047) JDK中推荐的是对List集合尽量要实 ...

  8. OpenCV像素点邻域遍历效率比较,以及访问像素点的几种方法

    OpenCV像素点邻域遍历效率比较,以及访问像素点的几种方法 前言: 以前笔者在项目中经常使用到OpenCV的算法,而大部分OpenCV的算法都需要进行遍历操作,而且很多遍历操作都是需要对目标像素点的 ...

  9. list遍历的四种方法及效率对比

    ArrayList 代码如下: package com.danhar.mbox.fegin;import java.util.ArrayList; import java.util.Iterator; ...

最新文章

  1. 软件测试:黑盒白盒与动态静态之间有必然联系吗
  2. python os.system 不打印_Python初体验之我爱你
  3. 阿里云前端周刊 - 第 11 期
  4. CTFshow 反序列化 web266
  5. 可以响应各个方向CompoundDrawables点击操作的TextView的使用
  6. Spring Boot——自定义多个拦截器(HandlerInterceptor)配置方法与执行顺序
  7. 【Python图像特征的音乐序列生成】思路的转变
  8. grub rescue的修复方法
  9. 浅谈ORB-SLAM3
  10. [Java] 蓝桥杯 BASIC-10 基础练习 十进制转十六进制
  11. WinAPI 数据类型
  12. 如何用TortoiseSVN将项目代码提交到SVN
  13. oracle.exe占用cpu太高,360tray.exe占用CPU过高,怎么办
  14. 苹果公司邮箱联系大全
  15. iOS Wow体验 - 第四章 - 为应用的上下文环境而设计
  16. pygame 实现键盘鼠标映射
  17. Gravity 的测试调研 Gravity - TiDB
  18. 【初码干货】使用阿里云开放搜索服务快速搭建资源搜索网站
  19. 微软hackathon总结
  20. Bellman-Ford Spfa

热门文章

  1. matlab小波三维图,matlab小波包变换估计时变功率谱三维图出图和理想不一样
  2. Java继承_java继承
  3. MATLAB利用串口接收数据,并实时显示图形
  4. TensorFlow 笔记2--MNIST手写数字分类
  5. c++17(24)-枚举与switch
  6. 工业用微型计算机笔记(5)-指令系统(2)
  7. codeforces 7.22 F Pairwise Modulo
  8. 还说不会深度学习,三招帮你“炼丹”成功
  9. 【面试相关】非计算机专业如何1年内自学拿到算法offer
  10. GPU算力免费用?百度AI Studio两周年惊喜活动开启