Java ArrayList和Vector、LinkedList與ArrayList、數組(Array)和列表集合(ArrayList)的區別

ArrayList和Vector的區別

ArrayList與Vector主要從二方面來講.  

一.同步性:

   Vector是線程安全的,也就是說是同步的,而ArrayList是線程序不安全的,不是同步的。

二.操做:

    因爲Vector支持多線程操做,因此在性能上就比不上ArrayList了。

三.數據增加:

       ArrayList和Vector都有一個初始的容量大小,當存儲進去它們裏面的元素個數超出容量的時候,就須要增長ArrayList和Vector的存儲空間,每次增長存儲空間的時候不是隻增長一個存儲單元,是增長多個存儲單元。

       Vector默認增長原來的一倍,ArrayList默認增長原來的0.5倍。

       Vector能夠由咱們本身來設置增加的大小,ArrayList沒有提供相關的方法。


LinkedList與ArrayList的區別

二者都實現的是List接口,不一樣之處在於:

(1)、ArrayList是基於動態數組實現的,LinkedList是基於鏈表的數據結構。

(2)、get訪問List內部任意元素時,ArrayList的性能要比LinkedList性能好。LinkedList中的get方法是要按照順序從列表的一端開始檢查,直到另外一端

(3)、對於新增和刪除操做LinkedList要強於ArrayList,由於ArrayList要移動數據

       LinkedList實現了List接口,容許null元素。此外LinkedList提供額外的get,remove,insert方法在LinkedList的首部或尾部。這些操做使LinkedList可被用做堆棧(stack),隊列(queue)或雙向隊列(deque)。

       注意LinkedList沒有同步方法。若是多個線程同時訪問一個List,則必須本身實現訪問同步。一種解決方法是在建立List時構造一個同步的List:

List list = Collections.synchronizedList(new LinkedList(…));



數組(Array)和列表集合(ArrayList)的區別數組


  Array能夠包含基本類型和對象類型,ArrayList只能包含對象類型。

  Array大小是固定的,ArrayList的大小是動態變化的。

  ArrayList提供了更多的方法和特性,好比:addAll(),removeAll(),iterator()  等等。

  對於基本類型數據,集合使用自動裝箱來減小編碼工做量。可是,當處理固定大小的基本數據類型的時候,這種方式相對比較慢。安全

相關文章
相關標籤/搜索