ArrayList及LinkedList原始碼分析

2021-10-21 04:33:47 字數 750 閱讀 9999

jdk7的情況

建議在開發中使用帶引數的構造器:arraylist list = new arraylist(int capaity); 這樣能夠減少擴容次數,從而提高效率。

jdk8的情況

小總結jdk7中的arraylist中底層object陣列的建立類似於單例模式中的餓漢式,一呼叫建構函式就建立了乙個長度為10的object陣列;jdk8中arraylist的建立類似於單例模式中的懶漢式,第一次呼叫add新增資料的時候才建立陣列,延遲了陣列的建立,節省記憶體。

linkedlist底層資料結構使用的是雙向鍊錶,體現在linkedlist中封裝了乙個node內部類:

private

static

class

node

}

其中有prev前驅指標和next後繼指標,此外在linkedlist中還有兩個很重要的指示節點,乙個是頭節點乙個是尾節點:

transient node

first;

transient node

last;

當呼叫add方法的時候,會自動呼叫linklast方法,即將當前元素插入到鍊錶的最後:

public

boolean

add(e e)

void

linklast

(e e)

ArrayList及Map常用方法

arraylist 儲存有序可重複元素,增刪改查 分別為 list.add int index,object object list.remove int index list.set index,element list.get int index list.size map儲存無序,不可重複的元...

ArrayList類及繼承介紹

arraylist是用來儲存資料的陣列。陣列的長度不可變,陣列如果要擴容,可以用陣列的複製 int copyof int,int newlength 為了解決陣列長度不可變的問題,可以實現陣列長度動態變化。arraylist僅支援引用型別的資料。arraylistarrlist new arrayl...

ArrayList去重及排序

list去重 方法1 set集合去重,不打亂順序 listlist new arraylist list.add aaa list.add bbb list.add aaa list.add aba list.add aaa setset new hashset listnewlist new ar...