一、arraylist屬性:
1、arraylist屬性主要就是當前陣列長度size,以及存放陣列的物件elementdata陣列
public class arraylistextends abstractlistimplements list, randomaccess, cloneable, serializable
二、arraylist建構函式
1、不傳入引數,則使用預設無參構建方法建立arraylist物件
public arraylist()
2、入引數,則代表指定arraylist的初始陣列長度,傳入引數如果是大於等於0,則使用使用者的引數初始化,如果使用者傳入的引數小於0,則丟擲異常
public arraylist(int initialcapacity) else if (initialcapacity == 0) else
}
三、常用方法:
1、add(e e) 方法:
public boolean add(e e)
確保新增的元素有地方儲存,當第一次新增元素的時候this.size+1 的值是1,所以第一次新增的時候會將當前elementdata陣列的長度變為10
private void ensurecapacityinternal(int mincapacity)
ensureexplicitcapacity(mincapacity);
}
將修改次數(modcount)自增1,判斷是否需要擴充陣列長度,判斷條件就是用當前所需的陣列最小長度與陣列的長度對比,如果大於0,則增長陣列長度
private void ensureexplicitcapacity(int mincapacity)
如果當前的陣列已使用空間(size)加1之後 大於陣列長度,則增大陣列容量,擴大為原來的1.5倍
private void grow(int arg0)
if (arg2 - 2147483639 > 0)
this.elementdata = arrays.copyof(this.elementdata, arg2);
}
2、add(int index, e element)方法:加元素到陣列中指定位置的時候,要將該位置及其後邊所有的元素都整塊向後複製一位
public void add(int index, e element)
private void rangecheckforadd(int index)
3、get方法:返回指定位置上的元素時,可以通過索引直接獲取(o(1))
public e get(int index)
4、set方法:set的位置小於當前陣列的長度(size)並且大於0,獲取指定位置(index)元素,然後放到oldvalue存放,將需要設定的元素放到指定的位置(index)上,然後將原來位置上的元素oldvalue返回給使用者
public e set(int index, e element)
5、contains方法:遍歷陣列中的每乙個元素作對比,如果找到對於的元素,則返回true,沒有找到則返回false
public boolean contains(object o)
public int indexof(object o) else
return -1;
}
6、remove(int)方法:通過索引刪除指定位置上的元素
public e remove(int index)
7、remove(object):arraylist是可以存放null值
public boolean remove(object o)
} else
}return false;
}
private void fastremove(int index)
總結:
1、arraylist可以存放null
2、arraylist本質上就是乙個elementdata陣列
3、arraylist區別於陣列的地方在於能夠自動擴充套件大小(1.5倍),其中關鍵的方法就是gorw()方法
4、arraylist是陣列的特性,查詢方面會很快,插入刪除射界資料的位置移動效能下降很多
5、arraylist實現了randomaccess,所以在遍歷它的時候推薦使用for迴圈
ArrayList原始碼分析1
所有的分析基於jdk15 arraylist的資料結構是陣列。基於陣列的實現。是執行緒不安全的資料結構。實現了list介面。預設arraylist的容量 private static final int default capacity 10 空陣列例項 private static final o...
ArrayList原始碼分析
arraylist是平時使用很多的乙個類,趁有時間,我也閱讀以下原始碼,以幫助自己加深理解。類的層次結構這裡就不列出了,主要分析一下原始碼部分,屬性部分 protected transient int modcount 0 這個屬性是從abstractlist繼承過來的,每次arraylist進行結...
ArrayList原始碼分析
有參建構函式傳入乙個int public arraylist int capacity 如果為0則返回空陣列,否則new 乙個capacity的陣列 array capacity 0 emptyarray.object new object capacity 無參建構函式 public arrayl...