原文地址:http://blog.csdn.net/zq602316498/article/details/39163899
在 JDK1.5 之后,至少有三种遍历的方式:ForEach、迭代器、for循环性能比较
- package bupt.xiaoye.charpter2.list;
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
- public class TestFor {
- public static void testForEach(List list) {
- Object temp;
- for(Object t : list)
- temp = t;
- }
- public static void testFor(List list) {
- Object temp;
- for (int i = 0; i < 1000000; i++) {
- temp = list.get(i);
- }
- }
- public static void testIterator(List list) {
- Object temp;
- for(Iterator<Object> it = list.iterator();it.hasNext();){
- temp = it.next();
- }
- }
- public static void main(String[] args) {
- Object obj = new Object();
- List list = new ArrayList();
- for (int i = 0; i < 1000000; i++) {
- list.add(obj);
- }
- testFor(list);
- testForEach(list);
- testIterator(list);
- }
- }
运行结果为:
可以看到,直接for循环效率最高,其次是迭代器和 ForEach操作。
作为语法糖,其实 ForEach 编译成 字节码之后,使用的是迭代器实现的,反编译后,testForEach方法如下:
- public static void testForEach(List list) {
- for (Iterator iterator = list.iterator(); iterator.hasNext();) {
- Object t = iterator.next();
- Object obj = t;
- }
- }
可以看到,只比迭代器遍历多了生成中间变量这一步,因为性能也略微下降了一些。
原文地址:http://blog.csdn.net/zq602316498/article/details/39163899
相关推荐
foreach、while、for性能比较
下面小编就为大家带来一篇老生常谈foreach(增强for循环)和for的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
For 和 Foreach 的效率问题,先猜一下,再运行一下,看猜的对不对。
循环语句为众多程序员们提供了很大的便利,有while、do…while、for和 foreach。而且foreach语句很简洁,但是它的优点不仅仅在于此,它的效率也是最高的。本文将详细给大家关于C#中foreach循环对比for循环的优势和...
1.forEach迭代器 forEach方法接收一个函数作为参数,对数组中每个元素使用这个函数,只调用这个函数,数组本身没有任何变化 //forEach迭代器 function square(num){ [removed](num + ' ' + num*num + ' '); } ...
轻松学习C#的foreach迭代语句, C#语言提供了一个for语句循环的捷径,而且还促进了集合类的更为一致,就是本文提到的foreach语句,感兴趣的小伙伴们可以参考一下
foreach 是 Java 中的一种语法糖,几乎每一种语言都有一些这样的语法糖来方便程序员进行开发,编译期间以特定的字节码或特定的方式来对这些语法进行处理。能够提高性能,并减少代码出错的几率。
主要介绍了Java中遍历数组使用foreach循环还是for循环?本文着重讲解for语句的语法并给出使用实例,同时总结出尽量使用foreach语句遍历数组,需要的朋友可以参考下
HashTable的数据结构如下:通过这段源码可以看出来,如果是foreach的话,可以直接通过_Bucket里的next获取到下一个值,而如果是for循环,$
一、什么是迭代器? 生成器概念在Java,Python等语言中都是具备的,ES6也添加到了JavaScript中。...ES5中遍历集合通常都是 for循环,数组还有 forEach 方法,对象就是 for-in,ES6 中又添加了 Map 和 Set,而迭代器
ForEach 循环控制器是比较重要的逻辑控制器,但是一般不会单独使用需跟用户自定义的变量组件一起使用,ForEach 循环控制器从用户定义的变量中读取一系列相关的变量。该控制器下的采样器或控制器都会被执行一次或多...
利用foreach循环显示数组所有元素,对foreach循环进行更深了解
for循环与foreach的区别 foreach 依赖 IEnumerable. 第一次 var a in GetList() 时调用 GetEnumerator 返回第一个对象并赋给a, 以后每次再执行 var a in GetList() 的时候调用 MoveNext.直到循环结束. 期间GetList()...
VB For each循环实例 VB For each循环实例
PHP 数组 for foreach 循环 array_column函数.rar
for循环和foreach循环其实可以算得上是从属关系的,即foreach循环是可以转化成for循环,但是for循环不一定能转换成foreach循环。 下面简单介绍一下两种循环: 1.for循环 代码格式: for(表达式1;循环条件;表达式2) {...
主要介绍了全面解析JavaScript里的循环方法之forEach,for-in,for-of的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下
each-async - 异步并行迭代器(异步forEach)