arraylist原始碼學習
繼承自abstractlist,實現了list介面
private static final int default_capacity = 10 預設容量為10
transient object elementdata 底層使用object陣列來儲存資料
arraylist(int initialcapacity) 建構函式指定特定的容量大小
void ensurecapacityinternal(int mincapacity) 使用add/addall增加乙個或幾個元素都會呼叫ensurecapacityinternal(int mincapacity)方法,在呼叫ensureexplicitcapacity方法判斷現有的容量和增加元素過後的容量,如果需要擴容再呼叫grow方法擴容1.5倍,實現自動擴容
int size()方法檢視大小
boolean isempty()判斷是否為空
e get(int index)獲取下標為index的資料
e set(int index, e element)將資料儲存到下標為index的位置,並返回原資料
boolean add(e e)將元素e新增到陣列中,成功返回true
void add(int index, e element)新增乙個元素,並與下標為index的元素進行替換
e remove(int index)刪除下標為index的元素,並返回這個元素
boolean remove(object o)呼叫 void fastremove(int index)刪除下標為index的元素,不做返回舊元素資訊的操作
void clear()清空所有的元素,並將size置一
boolean addall(collection<? extends e> c) 將c中的所有元素進行新增,成功返回true
boolean addall(int index, collection<? extends e> c) 從下標為index開始新增c中的所有元素,成功返回true
void rangecheck(int index)判斷是否越界
iterator iterator() 迭代器方法,hasnext()方法用來判斷是否還有後繼元素和next()方法獲取下乙個元素,remove()方法刪除元素
listiterator listiterator() arraylist自帶的迭代器,有add()方法可以向arraylist中新增元素,hasprevious()方法和previous()方法可以逆向遍歷。nextindex()和previousindex()方法可以定位當前索引位置。
ArrayList的remove 方法原始碼解讀
remove index public boolean remove object obj else return false arraylist的remove object obj 方法判斷是否為同乙個物件的時候用的是equals方法,如果我們要移除list中的自定義類的時候需要重寫equals方...
JDK1 8 ArrayList擴容機制原始碼分析
屬性 預設長度 private static final int default capacity 10 空陣列 有參構造器 private static final object empty elementdata 空陣列 無參構造器 private static final object def...
Arraylist 學習筆記
比如collection介面的設計一樣,可能會定義乙個容器需要的相關方法,但是他在提供乙個abstractcollection的抽象方法,把相關能通用的方法進行封裝實現,後面的容器直接繼承abstractcollection,將需要重寫的方法實現,其他abstractcollection實現的方法就...