При увеличении размера ArrayList выполняется ли поблочное копирование элементов исходного массива?

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

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

Копирование выполняется с помощью системного вызова System.arraycopy(), который реализует поблочное копирование (memcpy-подобное), то есть копирует блок памяти целиком, а не поэлементно.

Это обеспечивает высокую производительность при расширении ArrayList, так как копирование происходит эффективно на уровне нативного кода.

Пример из кода ArrayList:

int newCapacity = oldCapacity + (oldCapacity >> 1); // увеличение на 50%
Object[] newElementData = new Object[newCapacity];
System.arraycopy(elementData, 0, newElementData, 0, size);
elementData = newElementData;

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее