ArrayList、Vector和LinkedList的區別


ArrayList、Vector和LinkedList類均在java.util包下

ArrayList和Vector都是基於存儲元素的Object[] array來實現的,它們會在內存中開辟一塊連續的空間

來存儲,因為數據存儲是連續的,所以它們支持用下標來訪問元素,索引數據的速度比較快

1)ArrayList和Vector都有一個初始化的容量大小,當里面存儲的元素超過初始的大小時就需要動態地擴充

它們的存儲空間,Vector默認擴充為原來的兩倍(每次擴充空間的大小可以設置),ArrayList默認

擴充為原來的1.5倍(沒有提供方法來設置空間擴充的方法)。

2)ArrayList和Vector最大的區別就是synchronization的使用,沒有一個ArrayList的方法是同步的,而

Vector的絕大多數方法(如add,insert,remove,set,equals,hashcode)都是直接或間接同步的,所以Vector

是線程安全的,ArrayList不是線程安全的。正是由於Vector提供了線程安全的機制,其性能上也要稍遜於ArrayList

 

LinkedList是采用雙向列表來實現的,對數據的索引需要從列表頭開始遍歷,因此用於隨機訪問則效率比較低,

但是插入元素時不需要對數據進行移動,因此插入效率較高。同時,LinkedList是非線程安全的容器

 

對容器的選擇:

當對數據的主要操作是索引或只在集合的末端增加、刪除元素時,使用ArrayList或Vector效率比較高,

當對數據的操作主要為指定位置或刪除操作時,使用LikedList效率比較高;當在多線程中使用容器時,

選用Vector較為安全


免責聲明!

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



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