//預設初始長度
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(intinitialcapacity)
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(intindex, e element)
private
void rangecheck(int
index)
//獲取對應下標的值
e elementdata(int
index)
public e remove(intindex)
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,另外乙個空參。我們呼叫空參...