ArrayList、Vector、LinkedList的特點和區別


ArrayList、Vector、LinkedList類均在java.util包中,均為可伸縮數組。

1)ArrayList和Vector都是基於存儲元素的Object[] array來實現的,它們會在內存中開辟一塊連續的空間來存儲,因此支持通過下標來訪問元素,同時索引數據的速度比較快,但是在插入和刪除元素時速度比較慢;LinkedList是采用雙向鏈表來實現的,對數據的索引需要從頭開始遍歷,因此用於隨機訪問的效率比較低,但是插入和刪除的效率較高。

2)ArrayList和Vector都有一個初始化的容量的大小,但里面存儲的元素超過這個大小時就動態的擴充它們的存儲空間,ArrayList默認擴充為原來的1.5倍(沒有方法可以設置擴充空間的大小),Vector默認擴充為原來的2倍(每次擴充空間的大小可是設置)

3)Vector是線程安全的,ArrayList和LinkedList不是線程安全的。ArrayList和Vector最大的區別就是synchronized(同步)的使用,ArrayList的方法都不是同步的,但Vector的絕大部分方法都是直接或者間接同步的,因此Vector的性能略遜於ArrayList。

4)在實際使用中,若對數據的主要操作是索引或者只在集合的末端增加、刪除元素時,使用ArrayList和Vector效率較高;若對數據的操作主要為在指定位置的插入或者刪除時,使用LinkedList效率比較高;當在多線程中使用容器時,選用Vector較為安全。


免責聲明!

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



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