for循环与foreach的性能比较
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的性能比较相关推荐
- 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 ...
- 批量绑定(bulk binds):FOR循环与FORALL的性能比较
http://www.eygle.com/archives/2005/11/bulk_binds_forall.html 通常在SQL语句中给PL/SQL变量赋值叫做绑定(Binding),一次绑定一 ...
- C# for循环与foreach循环
一:for( )循环 通过下标,对循环中的代码反复执行,功能强大,可以通过index取得元素.在处理比较复杂的处理的时候较为方便. 注意: 1.初始化参数.更新循环变量可以写多个,用逗号隔开 2.变量 ...
- ssis for循环容器_SSIS Foreach循环与For循环容器
ssis for循环容器 In this article, first, we will briefly describe foreach loops and for loops. Then, we ...
- LabView学习笔记(六):while循环与for循环
Labview学习笔记: LabView学习笔记(一):基础介绍 LabView学习笔记(二):滤波器实验 LabView学习笔记(三):基本控件 LabView学习笔记(四):动态数据类型 LabV ...
- for循环与while循环效率对比·5年以下编程经验必看C#】
for效率测试代码: using System; using System.Diagnostics; namespace Action {class Program{static void Main( ...
- python range函数怎么表示无限_Python for循环与range函数的使用详解
for 循环 for - in 语句是另一种循环语句,其特点是会在一系列对象上进行迭代(iterates),即它会遍历序列中的每一个项目 注意: 1.else 部分是可选的.当循环中包含它时,它循环中 ...
- range函数python-Python for循环与range函数的使用详解
for 循环 For - in 语句是另一种循环语句,其特点是会在一系列对象上进行迭代(Iterates),即它会遍历序列中的每一个项目 注意: 1.else 部分是可选的.当循环中包含它时,它循环中 ...
- Python 中的循环与 else
1. 含义 Python 中的循环与 else 有以下两种形式 for - else while - else Python中的 for.while 循环都有一个可选(optional)的 else ...
- C语言之for循环与while循环
文章目录 一.单层for循环 二.for循环与if选择的嵌套 三.多层for循环的嵌套 四.while循环 五.总结 一.单层for循环 引例:C语言实现求1到10的和(用for循环实现) #incl ...
最新文章
- SpringBoot服务上线流程
- Linux后台运行和关闭程序、查看后台任务
- bootstrap思考一
- MacOS 如何安装 SVN 命令终端
- [渝粤教育] 广东-国家-开放大学 21秋期末考试计量经济学10551k1
- 原来flash player对图片的解码不是异步的,AIR2.6后就异步了
- HDU 4539 郑厂长系列故事——排兵布阵 —— 状压DP
- 各种免费在线工具收集
- Tomcat 简单容器化
- POJ 1182 食物链(带权并查集)
- Atitit java 原生 客户端 native desktop桌面 javafx 浏览器环境 导入jar jfxrt.jar 17M package com.attilax.ui;
- Web 插件 之 ECharts 实现中国地图数据的简单展示实现
- Javaweb实现简易的留言板项目
- 设置win10自动登录/免密码自动登录方法
- 创联网络宽带上网助手的脱壳
- sublime text3 主题-Boxy Theme
- 中国十大计算机学院排名2015,中国计算机学院排名
- 时间线vue,类似物流快递运单追踪
- python:实现红黑树算法(附完整源码)
- 微信小程序实现商城案例(赋源码)