zoukankan      html  css  js  c++  java
  • java LinkedList与ArrayList遍历问题

    package test;
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Iterator;
    import java.util.LinkedList;
    import java.util.List;
    
    public class TestList {
        static final int size = 100000;
        
        public static void main(String[] args) {
            List<Integer> linkedList = new LinkedList<Integer>();
            List<Integer> arrayList = new ArrayList<Integer>();
            long startTime;
            long endTime;
            Iterator<Integer> iterator;
            
            //添加数据
            for (int i = 0; i < size; i++) {
                int value = (int) (Math.random() * 100);
                linkedList.add(value);
            }
            arrayList.addAll(linkedList);
            
    
            startTime = System.currentTimeMillis();
            for (int i = 0; i < linkedList.size(); i++) {
                Integer value = linkedList.get(i);
             }
            endTime = System.currentTimeMillis();
            System.out.println("下标方法遍历LinkedList 耗时" + (endTime - startTime) + "ms");
            
            
            startTime = System.currentTimeMillis();
            for (Integer value : linkedList) {
                
             }
            endTime = System.currentTimeMillis();
            System.out.println("增强for方法遍历LinkedList 耗时" + (endTime - startTime) + "ms");
            
            
            startTime = System.currentTimeMillis();
            iterator = linkedList.iterator();
            while (iterator.hasNext()) {
                Integer value = iterator.next();
            }
            endTime = System.currentTimeMillis();
            System.out.println("迭代器方法遍历LinkedList 耗时" + (endTime - startTime) + "ms");
            
            System.out.println();
            
            startTime = System.currentTimeMillis();
            for (int i = 0; i < arrayList.size(); i++) {
                Integer value = arrayList.get(i);
             }
            endTime = System.currentTimeMillis();
            System.out.println("下标方法遍历ArrayList 耗时" + (endTime - startTime) + "ms");
            
            
            startTime = System.currentTimeMillis();
            for (Integer value : arrayList) {
                
             }
            endTime = System.currentTimeMillis();
            System.out.println("增强for方法遍历ArrayList 耗时" + (endTime - startTime) + "ms");
            
            
            startTime = System.currentTimeMillis();
            iterator = arrayList.iterator();
            while (iterator.hasNext()) {
                Integer value = iterator.next();
            }
            endTime = System.currentTimeMillis();
            System.out.println("迭代器方法遍历ArrayList 耗时" + (endTime - startTime) + "ms");
        }
        
    }

    结果如下:

    下标方法遍历LinkedList 耗时3771ms
    增强for方法遍历LinkedList 耗时2ms
    迭代器方法遍历LinkedList 耗时1ms
    
    下标方法遍历ArrayList 耗时2ms
    增强for方法遍历ArrayList 耗时2ms
    迭代器方法遍历ArrayList 耗时1ms

    结论:

    1、对ArrayList,三种遍历方法效率差别不大;

    2、对LinkedList,下标方法遍历最慢,增强for方法和迭代器方法遍历效率相对高

  • 相关阅读:
    数据库进阶系列之二:细说数据库范式
    ORACLE HANDBOOK系列之三:树状结构查询(Hierarchical Queries)
    Tips&Tricks系列八:Fail to convert .vsmid,.testrunconfig
    Java基础系列之四:Remote Debug入门示例
    Java基础系列之五:Spring使用入门示例
    数据库进阶系列之三:使用Logminer解析Oracle日志
    ORACLE HANDBOOK系列之四:批量SQL(BULK SQL)
    Tips&Tricks系列九:数据库外键的两个细节
    Tips&Tricks系列六:ADO.NET OracleConnection.ClearPool(conn)
    Java基础系列之六:CORBA入门示例
  • 原文地址:https://www.cnblogs.com/wushengwuxi/p/8337771.html
Copyright © 2011-2022 走看看