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

Как реализована возможность динамического расширения массива в ArrayList и почему в него можно вставлять произвольное количество элементов?

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

sobes.tech AI

ArrayList в Java реализован на основе массива, который изначально имеет фиксированный размер. Когда количество элементов превышает текущий размер внутреннего массива, происходит его расширение — создаётся новый массив большего размера, и все элементы копируются в него.

Это позволяет вставлять произвольное количество элементов, так как ArrayList динамически увеличивает ёмкость по мере необходимости.

Пример упрощённой логики расширения:

private void ensureCapacity(int minCapacity) {
    if (minCapacity > elementData.length) {
        int newCapacity = elementData.length * 3 / 2 + 1;
        if (newCapacity < minCapacity) {
            newCapacity = minCapacity;
        }
        elementData = Arrays.copyOf(elementData, newCapacity);
    }
}

Таким образом, при добавлении элементов вызывается ensureCapacity, и если текущий массив заполнен, создаётся новый, большего размера, что обеспечивает динамическое расширение.