java中的Iterator与增强for循环的效率比较

  最近在优化代码时遇到了这个问题:Iterator与增强for循环到底哪个效率高?之前在学习的时候,好像记着老师说过遍历集合(如list)时,使用iterator好像正规一些,因为是专用的,但是运行效率问题确实不曾考虑,今天做了一个实验:对两者进行了简单的比较,得出的结论是增强for循环运行效率更高一些。但是我不确定这是否会代表全部情况,这里仅仅记录一下,做个参考,后期有新的认识再来补充,欢迎大家批评指正。

 1   public static void main(String[] args) {
 2         test();
 3     }
 4
 5     public static void test() {
 6
 7         List<Integer> list = new ArrayList<Integer>();
 8         int flag = 100000;
 9         int i=0;
10         while(i<flag) {
11             list.add(i);
12             i++;
13         }
14
15         // iterator测试
16         long start = System.currentTimeMillis();
17             Iterator<Integer> iterator = list.iterator();
18             while(iterator.hasNext()) {
19                 System.out.print(iterator.next());
20             }
21         long end = System.currentTimeMillis();
22         System.out.println("iterator本次执行耗费了"+(end-start)+"毫秒");
23
24         // 增强for循环测试
25         long start2 = System.currentTimeMillis();
26             for(Integer inte : list) {
27                 System.out.print(inte);
28             }
29         long end2 = System.currentTimeMillis();
30         System.out.println("for本次执行耗费了"+(end2-start2)+"毫秒");
31     }

  运行结果为:

时间: 2024-10-06 16:50:51

java中的Iterator与增强for循环的效率比较的相关文章

Java 中的foreach(增强for循环)

foreach概述 增强for循环:底层使用的是送代器,使用for循环的格式,简化了送代器的书写,foreach是JDK1.5之后出现的新特性 使用增强for循环 遍历集合 /** * 遍历集合 * @param arrayList 集合 */ public static void demoCollection(ArrayList<String> arrayList) { for (String string: arrayList) { System.out.println(string);

java中的Iterator和Iterable

1.Iterable接口在java.lang包中:Iterator接口在java.util包中 2.Iterable中只有一个方法,那就是返回一个Iterator迭代器:Iterator<T> iterator() 而Iterator中有关于迭代器的核心功能,next(),hasNext(),remove() 所以说,Iterable接口实现后的功能是“返回”一个迭代器,而Iterator接口实现后的功能是“使用”一个迭代器 3.在java.util中的容器类基本都实现了Iterable ,下

java中break和continue跳出指定循环(转载)

java中break和continue跳出指定循环 java中break和continue可以跳出指定循环,break和continue之后不加任何循环名则默认跳出其所在的循环,在其后加指定循环名,则可以跳出该指定循环(指定循环一般为循环嵌套的外循环). break跳出指定循环示例代码: loop1:for(int x = 0; x < 4; x++) { loop2:for (int y = 0; y < 5 ; y++ ) { System.out.println("x=&quo

Java中的Iterator用法

迭代器定义: 迭代器是一种设计模式,它是一个对象.迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式,迭代器模式属于行为型模式.这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示. 迭代器功能:Java中的Iterator功能简单,并且只能单向移动遍历 (1)iterator()方法:容器使用iterator()返回一个Iterator. 注意:iterator()方法是java.lang.Iterable接口,被Collecti

Java Iterator和增强for循环 for each详解

Iterator是Java中的一个迭代器接口(Interface),用来提供标准的Java迭代器 Iterator支持泛型因为集合(Collection)类可以装入的类型是不确定的,从集合中取出的都是Object类型,加入泛型,就是告诉编译器确定要装入的对象类型,取值时就无需强制转换了. for each 是 Java 5 中新增的一个循环结构,本质上是一个Iterator,特点是可以用来遍历集合元素而不用考虑集合下标. 综合实例: package net.csdn.shf4715; impor

java之Iterator迭代器 增强for循环

1.集合在存储元素时,如果未明确数据类型,可以存储object类型(各种数据),但在提取时,需要用一种通用的方法获得元素.这就是Iterator接口中的hasNext()/next()方法. 然而Iterator接口未有具体的实现类,但collection接口中有一个抽象的iterator()方法,可以得到 Iterator对象.并且collection所有子类都实现了这个方法. 1 //collection 继承Iterable中的Iterator的抽象方法: 2 Collection<Int

Java中break和continue跳出指定循环

在Java中,break和continue可以跳出指定循环,在循环前指定一个标签名称,使用break跳出即可.continue同. 代码如下: (1) 简单的一个continue会退回最内层循环的开头(顶部),并继续执行.        (2) 带有标签的continue会到达标签的位置,并重新进入紧接在那个标签后面的循环 (3) break会中断当前循环,并移离当前标签的末尾. (4) 带标签的break会中断当前循环,并移离由那个标签指示的循环的末尾. 扩展: Java中,goto语句作为保

java中的Iterator接口

Iterator接口 Iterator接口也是Java集合框架的成员,但它与Collection系列.Map系列的集合不一样:Collection系列集合.Map系列集合主要用于盛装其他对象,而Iterator则主要用于遍历(即迭代访问)Collection集合中的元素,Iterator对象也被称为迭代器. Iterator接口里定义了如下4个方法: –boolean hasNext():如果被迭代的集合还元素没有被遍历,则返回true. –Object next():返回集合里下一个元素. –

Java中迭代器Iterator的使用

Java集合类中Map接口下的相关类并没有像Collection接口的相关类一样实现get()方法,因此在要实现遍历输出的场景中没法直接用get()方法来取得对象中的数据,但Java本身提供了另一种遍历数据的方法,即用Iterator迭代器,虽然Iterator可以用来遍历读取数据,但它本质上不是一种方法,它只是一种设计模式,它是一个对象,一个"轻量级"的对象.下文讲讲Iterator在不同接口中的使用方法: (一)Iterator在Collection接口中的使用. 虽然Collec