Sobes.tech
Junior — Middle

Какви стъпки се предприемат за добавяне на нов елемент към структурата ArrayList?

sobes.tech AI

Отговор от 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);
}