ArrayList建構函式原始碼

2021-08-19 01:23:24 字數 1652 閱讀 4261

/**

* shared empty array instance used for empty instances.

*/private static final object empty_elementdata = {};

/*** shared empty array instance used for default sized empty instances. we

* distinguish this from empty_elementdata to know how much to inflate when

* first element is added.

*/private static final object defaultcapacity_empty_elementdata = {};

/**

* constructs an empty list with the specified initial capacity.

** @param initialcapacity the initial capacity of the list

* @throws illegalargumentexception if the specified initial capacity

* is negative

*/public arraylist(int initialcapacity) else if (initialcapacity == 0) else

}/**

* constructs an empty list with an initial capacity of ten.

*/public arraylist()

由jdk原始碼可知:

1,當不指定initialcapacity時建立空arraylist 此時內部空陣列為defaultcapacity_empty_elementdata,當新增第乙個元素時 長度自動擴充至default_capacity也就是10

2,當指定initialcapacity=0時建立空arraylist 此時內部空陣列為empty_elementdata,每新增一次元素容量擴充1

測試**:

二,trimtosize()方法 將elementdata陣列中的null去除,長度修剪至與元素個數size相等

ArrayList的remove 方法原始碼解讀

remove index public boolean remove object obj else return false arraylist的remove object obj 方法判斷是否為同乙個物件的時候用的是equals方法,如果我們要移除list中的自定義類的時候需要重寫equals方...

JDK1 8 ArrayList擴容機制原始碼分析

屬性 預設長度 private static final int default capacity 10 空陣列 有參構造器 private static final object empty elementdata 空陣列 無參構造器 private static final object def...

AbstractCollection原始碼分析

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