1. 程式人生 > >介紹關於ArrayList和LinkedList並闡述它們的異同點

介紹關於ArrayList和LinkedList並闡述它們的異同點

ArrayList和LinkedList都是我們常用的集合實現類,下面就介紹一下它們的特點以及它們的區別

ArrayList

ArrayList繼承自AbstractList類,實現了 List 介面。底層基於陣列實現容量大小動態變化。它是非執行緒安全的,一般多用於單執行緒環境下,允許 null 的存在。同時還實現了 RandomAccess、Cloneable、Serializable 介面,所以ArrayList 是支援快速訪問、複製、序列化的。

LinkedList

LinkedList是一種可以在任何位置進行高效地插入和移除操作的有序序列,本質是雙向連結串列,LinkedList包含三個比較重要的成員:first、last和size。first指向雙向連結串列的表頭。last指向雙向連結串列的尾部。size是雙向連結串列中節點的個數。他可以被當做堆疊、佇列和雙端佇列來使用。它分別實現了List 介面、Deque 介面、Cloneable介面、Serializable介面使得LinkedList能進行佇列操作、當作雙端佇列使用、能克隆、支援序列化。

ArrayList和LinkedList的區別

對於ArrayList,它在集合的末尾刪除或新增元素所用的時間是一致的,但是在列表中間的部分新增或刪除時所用時間就會大大增加。但是它在根據索引查詢元素的時候速度很快。

對於LinkedList則相反,它在插入、刪除集合中任何位置的元素所花費的時間都是一樣的,但是它根據索引查詢一個元素的時候卻比較慢,特別是在連結串列中間的元素。

ArrayList是實現了基於動態陣列的資料結構,LinkedList是基於連結串列結構。

對於隨機訪問的get和set方法,ArrayList要優於LinkedList,因為LinkedList要移動指標。

對於新增和刪除操作add和remove,LinkedList比較佔優勢,因為ArrayList要移動資料。

所以在我們進行對元素的增刪查操作的時候,進行 查操作時用ArrayList,進行增刪操作的時候最好用LinkedList。