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的區別
- Java中Vector和ArrayList的區別Java
- ArrayList和LinkedList的區別?
- ArrayList和LinkedList的區別
- 【java】【集合】List的三個子類—ArrayList、Vector、LinkedList的區別和聯絡Java
- java arrayList vector 區別Java
- Java集合系列(二):ArrayList、LinkedList、Vector的使用方法及區別Java
- java集合【12】——— ArrayList,LinkedList,Vector的相同點與區別是什麼?Java
- java中的List介面(ArrayList、Vector、LinkedList)Java
- Java List 常用集合 ArrayList、LinkedList、VectorJava
- ArrayList和LinkedList的區別是什麼
- java複習之HashMap和Hashtable的區別JavaHashMap
- ArrayList和LinkedList底層原理的區別和使用場景
- ArrayList、LinkedList和Vector的原始碼解析,帶你走近List的世界原始碼
- Java ArrayList 與 LinkedListJava
- List集合總結,對比分析ArrayList,Vector,LinkedList
- ArrayList和LinkedList的比較
- ArrayList和LinkedList如何實現的?
- Java ArrayList 與 LinkedList 的靈活選擇Java
- Java-ArrayList & LinkedList的原始碼對比分析Java原始碼
- std::vector 和 std::list 區別
- Java之ArrayList去除重複元素(包括字串和自定義物件)Java字串物件
- Java之InetSocketAddress和SocketAddress的區別Java
- Java之.class和.getClass()的區別Java
- Java之for(;;)和while(true)的區別JavaWhile
- Difference Between Arraylist And Vector : Core Java Interview Collection QuestionJavaView
- 3、List集合——ArrayList、LinkedList
- ArrayList & LinkedList原始碼解析原始碼
- Java 集合之LinkedListJava
- Java之try-catch和throws的區別Java
- 毫不留情地揭開 ArrayList 和 LinkedList 之間的神祕面紗
- Python學習之Pandas和Numpy的區別!Python
- 老徐和阿珍的故事:ArrayList和LinkedList的效率到底哪個高?
- Java 集合之ArrayListJava
- Java集合之ArrayListJava
- python深複製和淺複製的區別Python
- Python學習系列之 xrange和range的區別!Python
- 探索JAVA系列(二)LinkedList插入資料真的比ArrayList快嗎?Java