java複習之 Vector、ArrayList和LinkedList 的區別
ArrayList 和Vector他們底層的實現都是一樣的,都是使用陣列方式儲存資料,此陣列元素數大於實際儲存的資料以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及陣列元素移動等記憶體操作,所以索引資料快而插入資料慢。
Vector中的方法由於新增了synchronized修飾,因此Vector是執行緒安全的容器,但效能上較ArrayList差,因此已經是Java中的遺留容器。
LinkedList使用雙向連結串列實現儲存(將記憶體中零散的記憶體單元通過附加的引用關聯起來,形成一個可以按序號索引的線性結構,這種鏈式儲存方式與陣列的連續儲存方式相比,記憶體的利用率更高),按序號索引資料需要進行前向或後向遍歷,但是插入資料時只需要記錄本項的前後項即可,所以插入速度較快。
Vector屬於遺留容器(Java早期的版本中提供的容器,除此之外,Hashtable、Dictionary、BitSet、Stack、Properties都是遺留容器),已經不推薦使用,但是由於ArrayList和LinkedListed都是非執行緒安全的,如果遇到多個執行緒操作同一個容器的場景,則可以通過工具類Collections中的synchronizedList方法將其轉換成執行緒安全的容器後再使用(這是對裝潢模式的應用,將已有物件傳入另一個類的構造器中建立新的物件來增強實現)。
相關文章
- LinkedList和ArrayList的區別、Vector和ArrayList的區別
- ArrayList,LinkedList,Vector,Stack之間的區別
- ArrayList 和 Vector 的區別 -JAVAJava
- ARRAYLIST VECTOR LINKEDLIST 區別與用法
- ArrayList和LinkedList區別 javaJava
- Java中Vector和ArrayList的區別Java
- Java中ArrayList和LinkedList區別Java
- java arrayList vector 區別Java
- Vector和ArrayList的區別
- 【java】【集合】List的三個子類—ArrayList、Vector、LinkedList的區別和聯絡Java
- Java集合系列(二):ArrayList、LinkedList、Vector的使用方法及區別Java
- ArrayList和LinkedList的區別?
- ArrayList和LinkedList的區別
- java集合【12】——— ArrayList,LinkedList,Vector的相同點與區別是什麼?Java
- ArrayList、Vector、LinkedList的區別及其優缺點? (轉載)
- java中的List介面(ArrayList、Vector、LinkedList)Java
- Java List 常用集合 ArrayList、LinkedList、VectorJava
- Java 集合 ArrayList VS LinkedList VS VectorJava
- Java 容器和泛型(2)ArrayList 、LinkedList和Vector比較Java泛型
- Java中Vector與ArrayList的區別詳解Java
- ArrayList和LinkedList的區別是什麼
- java複習之HashMap和Hashtable的區別JavaHashMap
- 說出 ArrayList,Vector, LinkedList 的儲存效能和特性?
- Arraylist與Vector的區別 - Java那些事兒專欄Java
- ArrayList和LinkedList底層原理的區別和使用場景
- ArrayList、LinkedList和Vector的原始碼解析,帶你走近List的世界原始碼
- Java ArrayList 與 LinkedListJava
- C++學習之路(vector::clear和vector::erase的區別)C++
- List集合總結,對比分析ArrayList,Vector,LinkedList
- Java資料結構之LinkedList、ArrayList的效率分析Java資料結構
- ArrayList和LinkedList的比較
- 一道關於:ArrayList、Vector、LinkedList的儲存效能和特性 的面試題面試題
- ArrayList和LinkedList如何實現的?
- Java ArrayList 與 LinkedList 的靈活選擇Java
- Java中Array與ArrayList的主要區別Java
- std::vector 和 std::list 區別
- C++中vector*和vector有什麼區別C++
- Java-ArrayList & LinkedList的原始碼對比分析Java原始碼