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()  等等。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM