Sobes.tech
Back to questions
Junior — Middle
86

Какими шагами выполняется добавление нового элемента в структуру ArrayList?

Companies where asked
EDJE

Answer from AI

sobes.tech AI

При добавлении нового элемента в ArrayList выполняются следующие шаги:

  1. Проверяется, достаточно ли текущий внутренний массив (обычно Object[]) для хранения нового элемента.
  2. Если места недостаточно, создаётся новый массив с увеличенным размером (обычно на 50% или в 1.5 раза больше), и все элементы копируются в него.
  3. Новый элемент помещается в первую свободную позицию внутреннего массива.
  4. Увеличивается счётчик размера списка (size).

Примерно так выглядит добавление элемента:

public boolean add(E e) {
    ensureCapacityInternal(size + 1);  // проверка и расширение массива
    elementData[size++] = e;            // добавление элемента и увеличение размера
    return true;
}

private void ensureCapacityInternal(int minCapacity) {
    if (minCapacity - elementData.length > 0)
        grow(minCapacity);
}

private void grow(int minCapacity) {
    int oldCapacity = elementData.length;
    int newCapacity = oldCapacity + (oldCapacity >> 1); // увеличение на 50%
    if (newCapacity - minCapacity < 0)
        newCapacity = minCapacity;
    elementData = Arrays.copyOf(elementData, newCapacity);
}