• ArrayList和LinkedList插入删除效率的测试(完全不在一个数量级8/20)


    通过index获取元素的值

    java里面的链表可以添加索引,而C中的链表,是没有索引的






    1. package ArrayListVSLinkedList;  
    2.   
    3. import java.util.ArrayList;  
    4. import java.util.Date;  
    5. import java.util.LinkedList;  
    6.   ArrayList和LinkedList向后追加元素的性能比较
    7. /** 
    8.  * Created by IntelliJ IDEA. 
    9.  * User: luhba 
    10.  * Date: 17-8-10
    11.  * Time: 下午7:06 
    12.  * To change this template use File | Settings | File Templates. 
    13.  */  
    14. public class ArrayListVSLinkedList  
    15. {  
    16.      public static void ArrayListTest(long num)  
    17.      {  
    18.          ArrayList list = new ArrayList()  ;  
    19.          long berforeTime= new Date().getTime();  
    20.          for(int i=0;i<num;i++)  
    21.          {  
    22.              list.add(i,i);  
    23.          }  
    24.          long afterTime = new Date().getTime();  
    25.          System.err.println("The process ArrayListTest used a total time is "+(afterTime-berforeTime) +" millisecondes !" );  
    26.      }  
    27.     public static void linkedList(long num)  
    28.     {  
    29.         LinkedList  list = new LinkedList();  
    30.          long berforeTime= new Date().getTime();  
    31.          for(int i=0;i<num;i++)  
    32.          {  
    33.              list.add(i,i);  
    34.          }  
    35.          long afterTime = new Date().getTime();  
    36.          System.err.println("The process linkedList used a total time is "+(afterTime-berforeTime) +" millisecondes !" );  
    37.     }  
    38.     public static void main(String[] args)  
    39.     {  
    40.         ArrayListVSLinkedList.ArrayListTest(100000);  
    41.         ArrayListVSLinkedList.linkedList(100000);  
    42.     }  
    43. }  


    执行的结果是: 
    The process ArrayListTest used a total time is 31 millisecondes ! 
    The process linkedList used a total time is 32 millisecondes ! 

    这个是为什么呢?顺序存储插入的速度竟然比链式存储的还要快? 
    答:这个例子是顺序存储的最理想的方式,不用向后移动一个element,所以速度相当。那么再举一个差别最大






     //数组和链表在头部插入数据的效率

    import java.util.ArrayList;
    import java.util.Date;
    import java.util.LinkedList;
    import java.util.List;
    
    public class Hi{
         public static void ArrayListTest(long num){
             List list = new ArrayList()  ;
             long berforeTime= new Date().getTime();
             for(int i=0;i<num;i++){ //在数组的头部插入一个元素
                 list.add(0,i);
             }
             long afterTime = new Date().getTime();
             System.err.println("The process ArrayListTest used a total time is "+(afterTime-berforeTime) +" millisecondes !" );
        
             long t1= new Date().getTime();
             while(!list.isEmpty()){
            	   while(!list.isEmpty()){
                  	 list.remove(0);
                   }
             }
             long t2 = new Date().getTime();
             System.err.println("数组删除"+(t2-t1));
         }
        public static void linkedList(long num){
             List  list = new LinkedList();
             long berforeTime= new Date().getTime();
             for(int i=0;i<num;i++) {
                 list.add(0,i); /*添加元素:添加单个元素 
            如果不指定索引的话,元素将被添加到链表的最后*/
             }
             long afterTime = new Date().getTime();
             System.err.println("The process linkedList used a total time is "+(afterTime-berforeTime) +" millisecondes !" );
             
             long t1= new Date().getTime();
             while(!list.isEmpty()){
            	 list.remove(0);
             }
             long t2 = new Date().getTime();
             System.err.println("链表删除"+(t2-t1));  
        } 
        public static void main(String[] args){
           Hi.ArrayListTest(99999*5);
           Hi.linkedList(99999*5);
        }
    }
    

      

    
    
  • 相关阅读:
    XML&nbsp; XmlDocument
    程序集报错
    程序打开网页
    写入文件txt
    读取文件txt
    MSM8953中Android系统添加启动脚本.rc文件
    SELinux基础知识
    嵌入式Linux设备查看USB相关信息
    Linux内核态文件读写相关函数API
    C语言中sscanf()函数相关用法
  • 原文地址:https://www.cnblogs.com/cs-lcy/p/7220014.html
Copyright © 2020-2023  润新知