美文网首页
ArrayList与LinkedList不同方式访问速度比较

ArrayList与LinkedList不同方式访问速度比较

作者: Six_Cai | 来源:发表于2017-10-24 11:10 被阅读0次

本篇文章主要是比较使用循环遍历与使用迭代器进行遍历两种List的速度。

。public static void main(String[] args) {
    
    @SuppressWarnings("unchecked")
    ArrayList<Integer> arrayList = (ArrayList<Integer>) initList(new ArrayList<>(), 100000);
    
    LinkedList<Integer> linkedList = new LinkedList<>(arrayList);
    
    
    
    System.out.println("遍历ArrayList");
    accessByLoop(arrayList);
    accessByIter(arrayList);
    
    arrayList = null;
    
    System.out.println("遍历LinkedList");
    accessByLoop(linkedList);
    accessByIter(linkedList);
    
}

private static <T> List initList(List list , int val){
    for(int i = 0;i < val;i++){
        list.add(val);
    }
    
    return list;
}
//使用循环进行遍历
private static void accessByLoop(List list){
    long currmills = System.currentTimeMillis();
    for(int i = 0;i < list.size();i++){
        list.get(i);
    }
    System.out.println("使用循环时长:"+ (System.currentTimeMillis() - currmills) +"ms");
}
//使用迭代器进行遍历
private static void accessByIter(List list){
    long currmills = System.currentTimeMillis();
    Iterator iterator = list.iterator();
    while(iterator.hasNext()){
        iterator.next();
    }
    System.out.println("使用迭代器时长:"+ (System.currentTimeMillis() - currmills) +"ms");
}

代码运行结果:
遍历ArrayList
使用循环时长:5ms
使用迭代器时长:5ms
遍历LinkedList
使用循环时长:5236ms
使用迭代器时长:9ms

因为ArrayList实现了RandomAccess这一标记接口而LinkedList没有实现该接口。建议在访问List时都使用迭代器,少用循环。

相关文章

网友评论

      本文标题:ArrayList与LinkedList不同方式访问速度比较

      本文链接:https://www.haomeiwen.com/subject/azjtpxtx.html