相同點:
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 如果目前的資料是查詢比較多,增刪...