JDK1.5开始新增了foreach循环,在语法上比for循环简洁;

但foreach并不是for循环的语法糖,而可以说是iterator的语法糖;

普通for循环:

for(int i=0;i<100;i++)
{a = i;
}

 

foreach循环:

for(int i : integers)
{a = i;
}

 

实质上等同于:

for(Iterator<Integer> i=list.iterator();i.hasNext();)
{a = i.next();
}

  

区别:

一个按顺序遍历,一个使用iterator迭代器遍历;

从数据结构来说,画重点:

for循环是随机访问元素,foreach是顺序链表访问元素;

性能上:

对于arraylist,是顺序表,使用for循环可以顺序访问,速度较快;使用foreach会比for循环稍慢一些。

对于linkedlist,是单链表,使用for循环每次都要从第一个元素读取next域来读取,速度非常慢;使用foreach可以直接读取当前结点,数据较快;

举个栗子:

顺序表 a[3]

  用for循环,从a[0]开始直接读到元素,接着直接读a[1];(顺序表的优点,随机访问)

  用foreach,  得到a[0]-a[2]的全部地址放入队列,按顺序取出队里里的地址来访问元素;

单链表 b[3]

  用for循环,从a[0]开始读元素、然后通过a[0]的next读到a[1]元素、通过a[0]的next的next读到a[2]元素,以此类推,性能影响较大,慎用!

  用foreach, 得到a[0]-a[2]的全部地址放入队列,按顺序取出队里里的地址来访问元素;

转载于:https://www.cnblogs.com/chenhao0302/p/9200863.html

for循环与foreach的性能比较相关推荐

  1. php in循环与for循环,详谈js中标准for循环与foreach(for in)的区别

    js中遍历数组的有两种方式 var array=['a'] //标准的for循环 for(var i=1;i alert(array[i]) } //foreach循环 for(var i in ar ...

  2. 批量绑定(bulk binds):FOR循环与FORALL的性能比较

    http://www.eygle.com/archives/2005/11/bulk_binds_forall.html 通常在SQL语句中给PL/SQL变量赋值叫做绑定(Binding),一次绑定一 ...

  3. C# for循环与foreach循环

    一:for( )循环 通过下标,对循环中的代码反复执行,功能强大,可以通过index取得元素.在处理比较复杂的处理的时候较为方便. 注意: 1.初始化参数.更新循环变量可以写多个,用逗号隔开 2.变量 ...

  4. ssis for循环容器_SSIS Foreach循环与For循环容器

    ssis for循环容器 In this article, first, we will briefly describe foreach loops and for loops. Then, we ...

  5. LabView学习笔记(六):while循环与for循环

    Labview学习笔记: LabView学习笔记(一):基础介绍 LabView学习笔记(二):滤波器实验 LabView学习笔记(三):基本控件 LabView学习笔记(四):动态数据类型 LabV ...

  6. for循环与while循环效率对比·5年以下编程经验必看C#】

    for效率测试代码: using System; using System.Diagnostics; namespace Action {class Program{static void Main( ...

  7. python range函数怎么表示无限_Python for循环与range函数的使用详解

    for 循环 for - in 语句是另一种循环语句,其特点是会在一系列对象上进行迭代(iterates),即它会遍历序列中的每一个项目 注意: 1.else 部分是可选的.当循环中包含它时,它循环中 ...

  8. range函数python-Python for循环与range函数的使用详解

    for 循环 For - in 语句是另一种循环语句,其特点是会在一系列对象上进行迭代(Iterates),即它会遍历序列中的每一个项目 注意: 1.else 部分是可选的.当循环中包含它时,它循环中 ...

  9. Python 中的循环与 else

    1. 含义 Python 中的循环与 else 有以下两种形式 for - else while - else Python中的 for.while 循环都有一个可选(optional)的 else ...

  10. C语言之for循环与while循环

    文章目录 一.单层for循环 二.for循环与if选择的嵌套 三.多层for循环的嵌套 四.while循环 五.总结 一.单层for循环 引例:C语言实现求1到10的和(用for循环实现) #incl ...

最新文章

  1. SpringBoot服务上线流程
  2. Linux后台运行和关闭程序、查看后台任务
  3. bootstrap思考一
  4. MacOS 如何安装 SVN 命令终端
  5. [渝粤教育] 广东-国家-开放大学 21秋期末考试计量经济学10551k1
  6. 原来flash player对图片的解码不是异步的,AIR2.6后就异步了
  7. HDU 4539 郑厂长系列故事——排兵布阵 —— 状压DP
  8. 各种免费在线工具收集
  9. Tomcat 简单容器化
  10. POJ 1182 食物链(带权并查集)
  11. Atitit java 原生 客户端 native desktop桌面 javafx 浏览器环境 导入jar jfxrt.jar 17M package com.attilax.ui;
  12. Web 插件 之 ECharts 实现中国地图数据的简单展示实现
  13. Javaweb实现简易的留言板项目
  14. 设置win10自动登录/免密码自动登录方法
  15. 创联网络宽带上网助手的脱壳
  16. sublime text3 主题-Boxy Theme
  17. 中国十大计算机学院排名2015,中国计算机学院排名
  18. 时间线vue,类似物流快递运单追踪
  19. python:实现红黑树算法(附完整源码)
  20. 微信小程序实现商城案例(赋源码)

热门文章

  1. 今天 Java 14 正式发布了!放弃 Java 8 行吗?
  2. 牛逼了,竟然真的有程序员做出了一套完整的地府后台管理系统,还开源了
  3. 阿里45K高级Java岗,必备技能清单
  4. ActiveMQ下载与安装(Linux环境下进行)
  5. 士兵杀敌(三)_RMQ(区间最值查询)
  6. 【转】Servlet与web.xml的配置
  7. 简单快捷好用的vim配置和终端配置推荐
  8. ecmall挂件开发实例二(转)
  9. 使用javascript 实现.net 验证控件功能
  10. 《WinForm开发系列之控件篇》Item16 ErrorProvider