ArrayList原始碼解析

2022-10-09 21:24:21 字數 1839 閱讀 8412

//

預設初始長度

private

static

final

int default_capacity = 10;

//初始空陣列

private

static

final object empty_elementdata ={};

//共享空陣列 和 empty_elementdata 區分用來檢視擴容多少

private

static

final object defaultcapacity_empty_elementdata ={};

//list儲存資料的陣列

transient

object elementdata;

//list長度

private

intsize;

public

arraylist()

public arraylist(int

initialcapacity)

else

if (initialcapacity == 0)

else

}

/**

* e 傳入的引數 */

public

boolean

add(e e)

/*** mincapacity 當前陣列長度+1

*/private

void ensurecapacityinternal(int

mincapacity)

/***elementdata 存值陣列

*mincapacity 當前陣列長度+1 */

private

static

int calculatecapacity(object elementdata, int

mincapacity)

//當 存值陣列 不為空的話 返回 當前陣列長度+1的值

return

mincapacity;

}/**

*mincapacity 返回的最大長度 */

private

void ensureexplicitcapacity(int

mincapacity)

/***mincapacity 需要擴容的長度 */

//判斷下標是否大於等於陣列長度,是的話丟擲陣列越界

private

void rangecheck(int

index)

public e set(int

index, e element)

private

void rangecheck(int

index)

//獲取對應下標的值

e elementdata(int

index)

public e remove(int

index)

private

void rangecheck(int

index)

e elementdata(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,另外乙個空參。我們呼叫空參...