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...