说增强for循环更有效率有点过分简单。它可以是,但在许多情况下,它几乎完全一样的老校园循环。

首先需要注意的是,对于集合,增强的for循环使用了一个迭代器,所以如果你使用迭代器手动迭代一个集合,那么你应该具有与增强的for循环几乎相同的性能。

一个增强的for循环比一个天真实现的传统循环更快的地方就是这样:

LinkedList list = ...;

// Loop 1:

int size = list.size();

for (int i = 0; i

Object o = list.get(i);

/// do stuff

}

// Loop 2:

for (Object o : list) {

// do stuff

}

// Loop 3:

Iterator it = list.iterator();

while (it.hasNext()) {

Object o = it.next();

// do stuff

}

在这种情况下,循环1将比循环2和循环3都慢,因为它将必须(部分地)在每次迭代中遍历列表以找到位置i的元素。循环2和3,由于使用了Iterator,所以列表中只会进一步增加一个元素。循环2和3也将具有相同的性能,因为循环3几乎完全是编写器在循环2中编写代码时将产生的。

java 增强for循环效率_java – 为什么增强for循环的循环效率比正常相关推荐

  1. java 迭代器的优缺点_java迭代器和for循环优劣详解

    在进行迭代的时候,程序运行的效率也是我们挑选迭代方法的重要原因.目前有三种迭代方法:for循环.迭代器和Foreach.前两者相信大家都非常熟悉,为了更加直观分析效率的不同,我们还加入Foreach一 ...

  2. java中doloop语句_Java中的do-while循环——通过示例学习Java编程(11)

    作者:CHAITANYA SINGH 来源:https://www.koofun.com/pro/kfpostsdetail?kfpostsid=22&cid=0 在上一篇教程中,我们讨论了w ...

  3. java 垃圾回收 新生代_Java垃圾回收

    一.概述 Java垃圾回收器实现内存的自动分配和回收,这两个操作都发生在Java堆上(还包括方法区,即永久代).垃圾回收操作不是实时的发生(对象死亡不会立即释放),当内存消耗完或者是达到某一指标(th ...

  4. 用java完成一个模块_Java 9 揭秘(3. 创建你的第一个模块)

    文 by / 林本托 Tips 做一个终身学习的人. 在这个章节中,主要介绍以下内容: 如何编写模块化的Java程序 如何编译模块化程序 如何将模块的项目打包成模块化的JAR文件 如何运行模块化程序 ...

  5. java ocr技术原理_Java OCR 图像智能字符识别技术,可识别中文

    几天一直在研究OCR技术,据我了解的情况,国内最专业的OCR软件只有2家,清华TH-OCR和汉王OCR,看了很多的OCR技术发现好多对英文与数字的支持都很好,可惜很多都不支持中文字符.Asprise- ...

  6. java se runtime 下载_Java SE Runtime Environment下载

          Java SE Runtime Environment是一款软件编程语言和计算平台,它的基础技术支持最新的程序,同时还包括实用程序.游戏和业务应用程序.Java SE Runtime En ...

  7. java 内存回收参数_JAVA虚拟机内存回收算法与调优参数

    一.相关概念 基本回收算法 引用计数(Reference Counting)比较古老的回收算法.原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数.垃圾回收时,只用收集计数为0的对象. ...

  8. java集合的遍历_java集合遍历方法总结

    java集合遍历方法总结 一.for循环遍历集合 使用条件: ①能否确定集合中的元素个数 ②集合是否可以通过整数索引值来精确位置 public static void forTraversal(){ ...

  9. java的基本特性_Java语言的基本特点

    Java语言的基本特点 引导语:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念.那么你们知道Java语言的特点吗,以下是百分网小编分享给大 ...

最新文章

  1. 为什么SpringBoot的 jar 可以直接运行?
  2. 常用javascript函数
  3. 【poj2187】 Beauty Contest
  4. 单步调试时遇到cout和cin会自动跳到ostream文件中的解决方案
  5. vue 请求多个api_vue 一个input同时请求两个接口
  6. linux-Centos7安装python3并与python2共存
  7. 图像特效——摩尔纹 moir
  8. Python_python内置函数
  9. 全字符微信名 php,PHP方法处理微信昵称特殊符号过滤
  10. Deepin安装最新显卡RTX2080Ti及CUDA10.1
  11. YIi2 對接 支付寶Alipay支付接口
  12. 联发科MT8377 MT8389 MT6589 MT6577等芯片详细解析
  13. mybatis xml注释sql 的注意事项
  14. NanoHttpd 单文件
  15. 什么是数据挖掘,机器学习与数据挖掘主要有什么联系?
  16. 高并发,我把握不住啊!
  17. python计算样本方差_Python numpy 样本方差估计
  18. EMW3080+STC15轻松实现设备上云2(阿里云物联网平台、智能生活开放平台)
  19. [渝粤教育] 西南科技大学 电子测量与仪表 在线考试复习资料
  20. python 二进制与十进制之间的转换

热门文章

  1. IAP 对 Receipt 做验证
  2. aix 修改服务器时间,AIX修改系统时间
  3. 【问链财经-区块链基础知识系列】 第二十四课 摩根币来了,Ripple们该怎么办?
  4. PyQt5 实现音乐播放器界面
  5. openresty 缓存
  6. Resharper使用详解
  7. 记录一下开源DLNA协议栈(cyberlink for java)在android平台实现的Media Renderer为什么发现不了
  8. boosting 算法总结
  9. 电脑开机后左上角有个减号一直闪
  10. 手游的世界观和方法论