java ArrayList原始碼學習

2021-06-20 19:27:44 字數 1598 閱讀 9297

該類繼承於abstractlist,裡面對於資料和結構的操作如下。

trimtosize();更新size,如果size小於(陣列的)lenth,則更新size的大小。

public void ensurecapacity(int mincapacity)確保容量,如果不夠就擴容成原來的1.5倍+1;

public int size() 容量

public boolean isempty();判斷是否為空。

public boolean contains(object o)判斷是否有這個物件

public int indexof(object o)找到標籤。

public int lastindexof(object o)找到最後一次出現的位置。

public object clone()轉殖,返回新的乙個物件

public object toarray() ,變成陣列,返回乙個obj的陣列。

public t toarray(t a),變成t型別的陣列。

public e get(int index)通過標籤訪問元素。

public e set(int index, e element)重新設定某個標籤的元素。

public boolean add(e e) 新增乙個元素。

public void add(int index, e element)在指定位置插入元素

public e remove(int index)清除,有檢查。

public boolean remove(object o)刪除這個物件,不需要進行檢查。

private void fastremove(int index) 快速刪除,內部使用,不需要進行檢查。

public void clear()清除這個陣列鍊錶。

public boolean addall(collection<? extends e> c)吧乙個集合類的所有元素都新增到後邊。

public boolean addall(int index, collection<? extends e> c)在指定的位置後面插入所有的元素。

protected void removerange(int fromindex, int toindex) 刪除指定範圍內的元素。

private void rangecheck(int index) 檢查範圍,只有內部能用。

list和arraylist 如果不把型別t指出來,那麼返回的會是乙個object。

看了arraylist 的add(int,e)原始碼和add(e)原始碼 lastindexof(object o)這是查詢

這個obj最後出現的位置(找到了返回位置,沒有這個元素返回-1,這個元素為空返回最

後乙個位置)。clone方法。

toarray方法  

public t toarray(t a)

remove(index),先做邊界檢查,然後將大小-1,然後將所有元素向前複製乙個位置。

返回已刪除了。

remove(e),刪除這個物件。fastremove(私有)這個不做任何檢查,不用儲存已刪除

的元素。。。modcount是從結構上改變這個arraylist的次數。

addall

AbstractCollection原始碼分析

abstractcollection抽象類提供了collection的骨架實現,collection分析請看 這裡直接看它的 是如何實現的.public abstract iterator iterator 該方法沒有實現.public abstract int size 該方法沒有實現.publi...

ThreadPoolExecutor原始碼閱讀

執行緒池解決兩個問題 一是復用執行緒,減少建立銷毀執行緒帶來系統開銷 二是限定系統資源使用邊界,避免大量執行緒消耗盡系統記憶體 適用於互不依賴,執行時間短,不需要對執行緒控制操作的執行緒 新增任務時,1.若執行緒數量小於corepoolsize,則新增執行緒執行任務 2.若執行緒數量大於等於core...

OrangePi One Android 原始碼編譯

一 系統環境搭建參照 二 lichee原始碼編譯 1.檢視help build.sh h2.配置核心 cd linux 3.4 make arch arm menuconfig 進入配置頁面,上下移動列表,空格是選擇列表,左右移動選擇退出選項 3.首次編譯執行清除 在 lichee linux3.4...