java中LinkedList的遍歷速度

我想比較一下用Iterator、for語句、foreach來遍歷LinkedList,誰的速度快。因而寫了以下代碼:java

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);

    }
    
}

運行的結果:code

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

可見用for語句遍歷LinkedList是最慢的。
it

相關文章
相關標籤/搜索