Sobes.tech
Назад к вопросам
Junior — Middle
63

Какова внутренняя реализация метода добавления элемента в ArrayList?

Ответ от нейросети

sobes.tech AI

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

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

Пример упрощённой реализации метода add:

public boolean add(E e) {
    if (size == elementData.length) {
        grow(); // увеличиваем массив
    }
    elementData[size++] = e;
    return true;
}

private void grow() {
    int newCapacity = elementData.length + (elementData.length >> 1);
    elementData = Arrays.copyOf(elementData, newCapacity);
}