6 LinkedList和ArrayList異同點

2021-08-20 05:21:33 字數 1589 閱讀 1350

相同點:

1 .他們都是執行緒不安全的

,只在單執行緒下適合使用

. arraylist

在多執行緒環境下可以考慮使用

.collections.synchronizedlist(list)

函式返回乙個執行緒安全的

arraylist類.

也可以使用

concurrent

並發包下的

copyonwritearraylist類.

2. linkedlist

和arraylist

都實現了

serializable介面,

因此他支援序列化

,能夠通過序列化傳輸

,實現了

cloneable介面,

能被轉殖.同時

arraylist

還實現了

randomaccess介面,

支援快速隨機訪問

,實際上就是通過下標序號進行快速訪問. 3

. 在查詢給定元素索引值等的方法中

,原始碼都將該元素的值分為

null

和不為null

兩種情況處理

,arraylist

中允許元素為

null

在查詢和刪除某元素時

,原始碼中都劃分為該元素為

null

和不為null

兩種情況來處理

,linkedlist

中允許元素為

null.區別:

1. linkedlist

是基於雙向鍊錶實現的

,除了可以當做鍊錶來操作外

,他還可以當做棧

.佇列或雙端佇列在使用

.並且在頭結點不存放資料

.arraylist

是基於陣列實現的

,是乙個動態陣列

,其容量能夠自動增長

,類似於

c語言中的動態申請記憶體

,動態增長記憶體

.2 . arraylist

基於陣列實現

,可以通過下標索引直接查詢到指定位置的元素

,因此查詢效率高

,但每次插入或刪除元素

,就要大量的移動元素

,插入刪除元素的效率低

.linkedlist

是基於鍊錶實現的

,因此插入刪除效率高

,查詢效率低

(雖然有乙個加速的動作

可以獲取第一和最後的乙個的元素,而arraylist不可以

實現佇列棧

linkedlist可以根據範圍刪除列表的元素,而arraylist不可以

LinkedList和ArrayList的區別

對於集合collection下的list介面,有兩個實現類,arraylist和linkedlist,那麼他們兩個有什麼區別呢。arraylist的底層由陣列實現,而linkedlist的底層由雙向鍊錶實現,底層的不同才是他們區別的根源。然而因為他們繼承於同乙個父介面,他們的很多方法都是相同的。關於...

ArrayList和LinkedList的面試題

一 arraylist為什麼是執行緒不安全的?arraylist在新增乙個元素的時候,它可能會有兩步來完成 1.在 items size 的位置存放此元素 2.增大 size 的值。在單執行緒執行的情況下,如果 size 0,新增乙個元素後,此元素在位置 0,而且 size 1 而如果是在多執行緒情...

ArrayList和LinkedList的用法

集合的體系 collection 單列集合的根介面 list 如果是實現了list介面的實現類,該集合類具備的特點 有序,可重複 arraylist arraylist底層是維護了 乙個object陣列實現的,特點 查詢速度快,增刪慢。什麼時候使用arraylist 如果目前的資料是查詢比較多,增刪...