java中LinkedList的遍历速度

我想比较一下用Iterator、for语句、foreach来遍历LinkedList,谁的速度快。于是写了如下代码:

package mystudy;

import java.util.*;


public class MyStudy {
    private static final int SIZE = 100000;
    private Integer[] arr = new Integer[SIZE];
    private AbstractList<Integer> absList;

    public void initialize(){
        LinkedList<Integer> list = new LinkedList<Integer>();
        for (int i = 0; i < SIZE; i ++){
            arr[i] = i;
            list.add(i);
        }

        absList = (AbstractList<Integer>)list.subList(0, list.size());
    }

    public void method0(){
        Integer tmp;
        for (int i = SIZE - 1; i >= 0; i --){
            tmp = arr[i];
        }
    }

    public void method1(){
        ListIterator<Integer> it = absList.listIterator(SIZE);
        Integer tmp;
        while(it.hasPrevious()){
            tmp = it.previous();
        }
    }

    public void method2(){
        Integer tmp;
        for (int i = SIZE - 1; i >= 0; i --){
            tmp = absList.get(i);
        }
    }

    public void method3(){
        Integer tmp;
        for(Integer i : absList){
            tmp = i;
        }
    }


    
    public static void main(String[] args){
        MyStudy study = new MyStudy();
        study.initialize();

        long start,expend0,expend1,expend2,expend3;

        start = System.currentTimeMillis();
        study.method0();
        expend0 = System.currentTimeMillis() - start;

        start = System.currentTimeMillis();
        study.method1();
        expend1 = System.currentTimeMillis() - start;

        start = System.currentTimeMillis();
        study.method2();
        expend2 = System.currentTimeMillis() - start;

        start = System.currentTimeMillis();
        study.method3();
        expend3 = System.currentTimeMillis() - start;

        System.out.println("expend0:" + expend0 + " expend1:" + expend1 + " expend2:" + expend2 + " expend3:" + expend3);

    }
    
}

运行的结果:

expend0:1 expend1:7 expend2:5548 expend3:7

可见用for语句遍历LinkedList是最慢的。

转载于:https://my.oschina.net/u/2291753/blog/468419

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值