【collection】3.java容器之ArrayList

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

因爲是數組,所以可以直接索引

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章