ArrayList
ArrayList底層是數組
add
新增元素的時候其實就是在數組下一個位置進行元素賦值,重點是在擴容上
擴容
private void grow(int minCapacity) {
// overflow-conscious code
int oldCapacity = elementData.length;
// 新空間擴容1.5倍
int newCapacity = oldCapacity + (oldCapacity >> 1);
// 如果擴容1.5倍,比設置的值還小,你那麼使用入參,否則使用1.5倍
if (newCapacity - minCapacity < 0) {
newCapacity = minCapacity;
}
// 判斷是否超出容量
if (newCapacity - MAX_ARRAY_SIZE > 0) {
// MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8 判斷是否超出這個範圍,如果超了,就最大隻能用Integer.MAX_VALUE,否則就Integer.MAX_VALUE - 8
newCapacity = hugeCapacity(minCapacity);
}
// minCapacity is usually close to size, so this is a win:
elementData = Arrays.copyOf(elementData, newCapacity);
}
get
因爲是數組,所以可以直接索引