增强for循环_Java面试题系列(四) 几种for循环遍历

Java中for循环遍历有几种常用的方式,普通for,增强for,迭代器遍历下面举个例子:简单创建一个List测试:
// 创建List
        List arr = new ArrayList();
        arr.add(1);
        arr.add(2);
        arr.add(3);
        System.out.println(arr);

输出结果:

[1, 2, 3]

一、普通for遍历:

// 普通for遍历
        System.out.println("普通for遍历");
        for(int i=0;i            System.out.println(arr.get(i));
        }

二、增强for遍历:

// 增强for遍历
        System.out.println("增强for遍历");
        for(int i:arr){
            System.out.println(i);
        }

三、迭代器遍历

// 迭代器遍历
        System.out.println("迭代器遍历");
        Iterator it = arr.iterator();while(it.hasNext()) {
           Integer obj = it.next();
            System.out.println(obj);
        }

整个代码运行结果很完美:

3c1e74f2c42133df36330c2b7607f709.png

如果需要用到下标,一般就用普通for遍历,如果不需要的话增强for写起来更简单一些,迭代器的遍历更省内存

如果我们进一步考虑这三种方式的遍历效率,那该怎么测试呢?因为现在我只加了3个元素,遍历时间会很短,我们无法统计时间,现在我给List里面加100000000个元素,我们在测试遍历时间是否有区别。我通过在程序中加入几个时间点最后做差值来计算遍历时间,我这里把每次遍历的输出给注释掉了,不然控制台打印特别慢,猴年马月都打印不完

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class forbl {
    public static void main(String[] args) {
        // 创建List
        List arr = new ArrayList();for (int i = 0; i < 100000000; i++) {
            arr.add(1);
        }// System.out.println(arr);
        Long a = System.currentTimeMillis();// 普通for遍历
        System.out.println("普通for遍历");for(int i=0;i// System.out.println(arr.get(i));
        }
        Long b = System.currentTimeMillis();// 增强for遍历
        System.out.println("增强for遍历");for(int i:arr){// System.out.println(i);
        }
        Long c = System.currentTimeMillis();// 迭代器遍历
        System.out.println("迭代器遍历");
        Iterator it = arr.iterator();while(it.hasNext()) {
           Integer obj = it.next();// System.out.println(obj);
        }
        Long d = System.currentTimeMillis();
        System.out.println("普通for时间:"+ (b - a));
        System.out.println("增强for时间:"+ (c - b));
        System.out.println("迭代器时间:"+ (d - c));
    }
}
赶快看下期待的结果:
普通for时间:5
增强for时间:102
迭代器时间:103
可以看到普通for速度最快了,为了避免是个例,我又运行了两遍,还是普通for最快,赶快自己动手试一下吧
普通for时间:9
增强for时间:105
迭代器时间:107
普通for时间:4
增强for时间:97
迭代器时间:81

Java学习社区

9d8ba70d8725d07921fd6811a52673cc.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值