首页 > 代码库 > 性能比较

性能比较

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

技术分享

  1. package ArrayListVSLinkedList;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.Date;  
  5. import java.util.LinkedList;  
  6.   
  7. /** 
  8.  * Created by IntelliJ IDEA. 
  9.  * User: luhba 
  10.  * Date: 13-7-6 
  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,所以速度相当。那么再举一个差别最大

 

package jjj;

import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedList;

public class ArrayListVSLinkedList{
     public static void ArrayListTest(long num){
         ArrayList 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 !" );
     }
    public static void linkedList(long num){
         LinkedList  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 !" );
    }
    public static void main(String[] args){
        ArrayListVSLinkedList.ArrayListTest(999999);
        ArrayListVSLinkedList.linkedList(999999);
    }
}

技术分享

 

性能比较