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

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

Компании, где спрашивали
ОТП БанкОТП Банк

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

sobes.tech AI

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

По умолчанию, при необходимости расширения, размер внутреннего массива увеличивается примерно на 50% от текущего размера. Это позволяет балансировать между частыми копированиями и избыточным потреблением памяти.

Например, если текущая емкость была 10, при переполнении она увеличится примерно до 15.

Такой механизм обеспечивает амортизированную эффективность добавления элементов: хотя отдельное добавление может вызвать дорогостоящую операцию копирования, в среднем добавление работает быстро.

Пример:

ArrayList<Integer> list = new ArrayList<>(2);
list.add(1);
list.add(2);
// При добавлении третьего элемента внутренний массив расширится
list.add(3);