學習筆記ArrayList原始碼學習

2021-09-25 22:29:47 字數 1283 閱讀 8049

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實現的方法就...