Java中ArrayList和LinkedList区别

在面试过程中有很多会问到ArrayList和LinkedList的区别,故特地下来研究了一番。
1.ArrayList的底层是基于动态数据实现,而LinkedList是属于基于链表的结构
2.ArrayList在获取数据是优于LinkedList,LinkedList是相当的迟缓,原因有以下:
ArrayList是根据下标直接取值,而LinkedList要移动指针查找。
3.至于集合中的add和remove,在ArrayList和LinkedList要看数据量,若是数据量不大,他两性能差不多,如果数据超大,那么ArrayList优于LinkedList

以下为测试代码:

public class demo {
    public static final  int n=20000;
   public static void  main(String arg[]){
       List list=new ArrayList();
       List list1=new LinkedList();
      System.out.println("array"+demo.adddemo(list));
       System.out.println("linkList"+demo.adddemo(list1));

       System.out.println("arrayget"+demo.getList(list));
       System.out.println("linkListget"+demo.getList(list1));


   }

    public  static  long getList(List list){
        long statime=System.currentTimeMillis();
        for(int i=0;i<list.size();i++){
           int j= Collections.binarySearch(list,i);
        }
        return System.currentTimeMillis()-statime;
    }

    public static   long adddemo(List list){
        long starttime=System.currentTimeMillis();
        for(int i=0;i<n;i++){
            list.add(i);
        }
        return System.currentTimeMillis()-starttime;
    }
}

猜你喜欢

转载自yu120396854.iteye.com/blog/2360554