arraylist是執行緒非安全的陣列列表,優勢在於陣列結構,查詢效率高,修改效率較低;由下圖的類圖,可以看出
arraylist是可以序列化,複製的;
1、自定義初始化容量大小,int型別,值為非負數
public arraylist(int initialcapacity) else if (initialcapacity == 0) else
}
2、無參構造,此時陣列為空,直到第一次新增元素時,才會定義為預設初始化大小10
public arraylist()
3、帶collection物件,將collection物件轉換為陣列,並將引用賦予elementdata,若物件有值,利用system.copy賦值給elementdata
public arraylist(collection extends e> c) else
}
最常用的新增元素,add的兩個方法:
public boolean add(e e)
2、contains方法,僅僅是遍歷列表資料,直到找尋到資料為止;如果資料量較大,建議使用hashset(基於hashmap的方式)
public boolean contains(object o)
public int indexof(object o) else
return -1;
}
3、clear方法,遍歷列表,將陣列引用指向null,但是陣列本身長度不變,仍然占用記憶體,引用物件所佔記憶體需要等gc判斷是否有其它引用後選擇**與否。
public void clear()
其實還有些方法值得看一下,等後面有時間再去補充吧...... JDK1 8 HashMap putVal原始碼解讀
final v putval int hash,k key,v value,boolean onlyifabsent,boolean evict 該節點不為鍊錶最後乙個節點,判斷值是否相同,相同直接退出迴圈,因為此時e指向 p.next 即p.next是相同節點,需要替換 if e.hash has...
JDK1 8 HashMap resize原始碼解讀
final node resize newcap oldcap 2 左移1位相當於原值 2 並且原長度大於16 else if newcap oldcap 1 maximum capacity oldcap default initial capacity newthr oldthr 1 doubl...
ThreadLocal總結 jdk1 8原始碼
threadlocal為每個使用它的執行緒提供乙個變數的副本。threadlocal中的主要方法 public void set t value public void set t value 先呼叫thread類的靜態方法獲得當前執行緒的thread物件,每個執行緒對應的thread物件都有乙個t...