一、簡介:
講解的版本是jdk 1.8。arraylist是基於陣列實現的,是乙個動態陣列,其容量能自動增長,類似於c語言中的動態申請記憶體,動態增長記憶體。arraylist不是執行緒安全的,只能用在單執行緒環境下,多執行緒環境下可以考慮用collections.synchronizedlist(list l)函式返回乙個執行緒安全的arraylist類,也可以使用concurrent並發包下的copyonwritearraylist類。
二、重要成員變數:
transient object elementdata:儲存元素
private int size:當前儲存的元素數量
private static final int default_capacity = 10:預設陣列大小
三、構造方法:
arraylist有三個構造方法,看下最只要的:
1public arraylist(int
initialcapacity) else
if (initialcapacity == 0) else
10 }
initialcapacity為傳入的初始容量,如果大於0,則建立陣列,否則,使用預設大小為0的陣列;
四、重要的方法:
1.add():
1public
boolean
add(e e) 89
private
void ensurecapacityinternal(int
mincapacity)
1415
ensureexplicitcapacity(mincapacity);16}
17private
void ensureexplicitcapacity(int
mincapacity)
2526
private
void grow(int
mincapacity)
**關鍵部分都做了注釋,就不在解釋了。
2.get():
1public e get(int
index)
7private
void rangecheck(int
index)
3.remove(int index):
1public e remove(int
index)
這樣基本的操作就講完了,還是挺簡單的吧。
ArrayList原始碼解析
new arraylist public arraylist public arraylist int initialcapacity else if initialcapacity 0 else private static final object defaultcapacity empty e...
ArrayList原始碼解析
arraylist內部的結構採用的是陣列。transient object elementdata non private to simplify nested class access當我們使用預設建構函式的時候,如下 private static final object defaultcapa...
ArrayList 原始碼解析
從日常 看arraylist的執行流程 第一步 我們初始化乙個 arraylist 然後新增乙個元素,如下 public class arraylisttest arraylist的建構函式和方法有三個,乙個是帶有初始大小的arraylist,乙個傳入collection,另外乙個空參。我們呼叫空參...