Ответ
ArrayList автоматически увеличивает свою вместимость при добавлении элементов, когда текущий размер достигает capacity. По умолчанию capacity увеличивается по формуле:
newCapacity = oldCapacity + (oldCapacity >> 1) (примерно в 1.5 раза).
Пример:
ArrayList<Integer> list = new ArrayList<>(3); // capacity = 3
list.add(1); list.add(2); list.add(3); // size = 3
list.add(4); // capacity увеличивается до ~5 (3 + 3/2)
Нюансы:
- Процесс увеличения требует создания нового массива и копирования элементов (O(n)).
- Можно избежать частых resize, указав начальный capacity близкий к ожидаемому размеру.
- Метод
ensureCapacity()позволяет заранее увеличить capacity вручную.