ArrayList увеличивает размер на коэффициент загрузки в следующих случаях:
- Начальная емкость: 10
- Коэффициент загрузки: 1(т.е. когда список заполнен)
- Скорость роста: current_size + current_size / 2
Контекст: JDK 7
При добавлении элемента в ArrayList
следующие вызовы public ensureCapacityInternal
и другие вызовы частных методов происходят внутри, чтобы увеличить размер.Это то, что динамически увеличивает размер ArrayList
.при просмотре кода вы можете понять логику, называя соглашения, по этой причине я не добавляю явное описание
public boolean add(E paramE) {
ensureCapacityInternal(this.size + 1);
this.elementData[(this.size++)] = paramE;
return true;
}
private void ensureCapacityInternal(int paramInt) {
if (this.elementData == EMPTY_ELEMENTDATA)
paramInt = Math.max(10, paramInt);
ensureExplicitCapacity(paramInt);
}
private void ensureExplicitCapacity(int paramInt) {
this.modCount += 1;
if (paramInt - this.elementData.length <= 0)
return;
grow(paramInt);
}
private void grow(int paramInt) {
int i = this.elementData.length;
int j = i + (i >> 1);
if (j - paramInt < 0)
j = paramInt;
if (j - 2147483639 > 0)
j = hugeCapacity(paramInt);
this.elementData = Arrays.copyOf(this.elementData, j);
}