В чем заключается увеличение в ArrayList

«В чем заключается увеличение в ArrayList» — вопрос из категории Алгоритмы и структуры данных, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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 вручную.