源自:jdk1.8.0_121
arraylist
繼承自abstractlist
,實現了list
、randomaccess
、cloneable
、serializable
。
arraylist
內部是通過陣列及陣列的擴容來實現
// 預設容量為10
private static final int default_capacity = 10;
// 空陣列
private static final object empty_elementdata = {};
// 預設空陣列
private static final object defaultcapacity_empty_elementdata = {};
// 存放資料的陣列,被transient修飾的引數不會被序列化
transient object elementdata;
// 實際元素的大小
private int size;
public arraylist(int initialcapacity) else if (initialcapacity == 0) else
}public arraylist()
public arraylist(collection<? extends e> c) else
}
注:arraylist(collection<? extends e> c)
之所以要判斷是否為object型別,是因為呼叫toarray()
方法的實現方式不同。
public object toarray()
private final e a;
public object toarray()
public boolean add(e e)
private void ensurecapacityinternal(int mincapacity)
ensureexplicitcapacity(mincapacity);
}private void ensureexplicitcapacity(int mincapacity)
private void grow(int mincapacity)
從原始碼可以看出,如果1.5倍的elementdata.length
小於10,會將elementdata
的大小擴容成預設的10,反之,則會以1.5倍的elementdata.length
進行擴容。
public void trimtosize()
}
posted @
2018-01-24 12:04
jarjune 閱讀(
...)
編輯收藏
Java中Vector和ArrayList的區別
首先看這兩類都實現list介面,而list介面一共有三個實現類,分別是arraylist vector和linkedlist。list用於存放多個元素,能夠維護元素的次序,並且允許元素的重複。3個具體實現類的相關區別如下 arraylist是最常用的list實現類,內部是通過陣列實現的,它允許對元素...
Java中Vector和ArrayList的區別
首先看這兩類都實現list介面,而list介面一共有三個實現類,分別是arraylist vector和linkedlist。list用於存放多個元素,能夠維護元素的次序,並且允許元素的重複。3個具體實現類的相關區別如下 arraylist是最常用的list實現類,內部是通過陣列實現的,它允許對元素...
Java中Vector和ArrayList的區別
首先看這兩類都實現list介面,而list介面一共有三個實現類,分別是arraylist vector和linkedlist。list用於存放多個元素,能夠維護元素的次序,並且允許元素的重複。3個具體實現類的相關區別如下 1 arraylist是最常用的list實現類,內部是通過陣列實現的,它允許對...