Back to questions
Junior — Middle
62
Каким образом осуществляется добавление элемента в ArrayList, когда текущий размер достигает максимальной вместимости?
Answer from AI
sobes.tech AI
В ArrayList при добавлении элемента, если текущий размер достигает максимальной вместимости внутреннего массива, происходит расширение этого массива.
Механизм работает так:
- Создается новый массив большего размера (обычно текущий размер умножается на 1.5 или 2).
- Содержимое старого массива копируется в новый.
- Новый элемент добавляется в расширенный массив.
Это позволяет ArrayList динамически увеличивать емкость по мере необходимости, сохраняя при этом быстрый доступ по индексу.
Примерно так реализовано расширение:
int newCapacity = oldCapacity + (oldCapacity >> 1); // увеличение на 50%
E[] newArray = (E[]) new Object[newCapacity];
System.arraycopy(oldArray, 0, newArray, 0, oldCapacity);
array = newArray;
Таким образом, добавление элемента при заполненном массиве вызывает перераспределение памяти и копирование данных в новый массив с увеличенной емкостью.