1 arraylist 建立
arraylistlist =
newarraylist<>();
//構造乙個初始容量為10 的空列表
private
static
final
object defaultcapacity_empty_elementdata = {};
public
arraylist
() 2 arraylist 新增資料
"afd"
); "afd"
); "afd"
); //[afd, afd, afd]
/** 0,
"qq"
); //[qq, afd, afd, afd]
而最終是通過 arrays.copyof(elementdata, newcapacity)這個方法將原來集合中的內容copy到新的集合中去
public
void
add(
intindex, e element)
newarraylist();
1);
newarraylist();
3);
//將 arraylist2 中的資料全部新增到arraylist3集合中
//[3, 1]
最終是通過 system.arraycopy()方法 資料copy到了乙個新的陣列中
public
boolean
addall
(collection<? extends e> c)
3 arraylist 移除集合中的所有的資料newarraylist();
//新增資料
"afd"
); "afd"
); "afd"
); //[afd, afd, afd]
//移除集合中的所有的資料
//public
void
clear
() 4 arraylist 判斷是否包含指定的元素
newarraylist();
//新增資料
"afd"
); "afd"
); "afd"
); //判斷 集合中是否包含指定的元素 ,飽含返回true ,不包含返回false
boolean
contains = arraylist.contains(
"afd"
); //true
boolean
contains
(object o)
5 arraylist 判斷列表中是否有元素(是否不為空)
boolean
empty = arraylist.isempty();
//這裡的size 是集合對應的儲存資料的內容陣列的大小
public
boolean
isempty()
6 arraylist 移除元素
newarraylist();
//新增資料
"afd"
); "abc"
); "axc"
); //方式一 移除0角標的資料
0);
//[abc, axc]
//方式二 移除資料 "axc"
"axc"
); //[abc]
e remove
(int
index)
boolean
remove
(object o)
else
} return
false
; }
這是兩個過載的方法 remove(int
index) 是根據傳入的角標,根據角標去除對應的資料,最後還是通過system.arraycopy方法來重建新的陣列
remove(object o) 是直接移除元素的方法,元素有可能為 null,所以這裡有了乙個判斷 ,最終都是通過 fastremove(index);方法中的system.arraycopy邏輯來建立新的陣列的
7 arraylist 修改資料
newarraylist();
//新增資料
for(
inti =
0; i <
14; i++)
void
rangecheck
(int
index) {
if(index >= size)
throw
newindexoutofbound***ception(outofboundsmsg(index));
然後通過elementdata(index) 拿到陣列中對應角標的資料,並返回去
最後重新對陣列中對應角標下進行賦值
ArrayList原始碼分析
arraylist是平時使用很多的乙個類,趁有時間,我也閱讀以下原始碼,以幫助自己加深理解。類的層次結構這裡就不列出了,主要分析一下原始碼部分,屬性部分 protected transient int modcount 0 這個屬性是從abstractlist繼承過來的,每次arraylist進行結...
ArrayList原始碼剖析
建構函式 有3個建構函式 1 在jdk原始碼中arraylist無參的建構函式,預設初始化大小是10 2 帶有指定大小引數的建構函式 3 帶有集合引數的建構函式 一 確定arrarlist的容量 1 若arraylist的容量不足以容納當前的全部元素,設定新的容量 原始容量 3 2 1。2 如果擴容...
ArrayList原始碼理解
與linkedlist原始碼理解放在一起查閱,效果更好 對隊成員變數的分析,可以知道arraylist的資料結構 對add 方法的分析,可以得知arraylist新增資料的效率不高 對get 方法的分析,可以看出arraylist查詢的效率非常高 對remove 方法的分析,可以了解到arrayli...