import java.util.*;
import java.util.Date.*;
public class Date2{
public static void main(String[] args){
   long time1=new Date().getTime();
   ArrayList linkedlist=new ArrayList();
   for(int n=0;n<30000;n++){
     linkedlist.add(n,null);
   }
   long time3=new Date().getTime();
       for(int m=0;m<30000;m++){
        linkedlist.add(m,null);
        }
        long time4 = new Date().getTime();
        System.out.print("batch Arraylist add:");
System.out.println(time3-time1);
        System.out.println(time4-time3);
}
}
上面是用arraylist在已有30000条元素基础上在插入30000条元素
import java.util.*;
import java.util.Date.*;
public class Date1{
public static void main(String[] args){
   long time1=new Date().getTime();
   LinkedList linkedlist=new LinkedList();
   for(int n=0;n<30000;n++){
     linkedlist.add(n,null);
   }
   long time3=new Date().getTime();
       for(int m=0;m<30000;m++){
        linkedlist.add(m,null);
        }
        long time4 = new Date().getTime();
        System.out.print("batch linkedlist add:");
System.out.println(time3-time1);
        System.out.println(time4-time3);
}
}
上面是用linkedlist在已有30000条元素基础上在插入30000条元素
但测试结果linklisted却要好时30000毫秒
而arraylist却几耗时2000毫秒这违背了这两个容器的构造原理呀,请专家解答!

解决方案 »

  1.   

    这个很容易就能明白的,你首先要搞清楚arraylist是用数组来实现的
    linkedlist是用链表来实现的,
    linkedlist插入元素快是只随便插入第n的元素,,
    而你用的插入是用
     for(int n=0;n <30000;n++){ 
         linkedlist.add(n,null); 
       } 
    其实是n到30000遍历呀,,书上不是上说数组的遍历要比链表的快呀,,
    不知道你明白了没,,
    你本意是要说随便插入个元素 linkedlist要比arraylist快,
    而你的代码做的却是数组的遍历,,当然arraylist快了
      

  2.   

    arraylist 是顺序存储,查询和顺序插入是高手。linkedlist 基于链表,多次删除,修改,它是高手。
      

  3.   

    你啊
    要搞清楚数据结构中的内容
    顺序存储和链式存储各自的优缺点
    arraylist 是顺序存储,查询和顺序插入是高手。 linkedlist 基于链表,多次删除,修改,它是高手。