Есть ли преимущества производительности с ArrayList.ensureCapacity ()? - PullRequest
4 голосов
/ 31 октября 2011

Есть ли какие-либо преимущества в производительности, если я вызову метод ArrayList.ensureCapacity (). В каком случае целесообразно использовать метод?

Ответы [ 2 ]

6 голосов
/ 31 октября 2011

Повышение производительности достигается в тех случаях, когда вы собираетесь добавить несколько элементов в список и знать, сколько вы собираетесь добавить.Вызывая ensureCapacity(int), вы вызываете изменение размера базового массива один раз, а не много раз.

Обратите внимание, однако, что в действительности вам редко нужно вызывать этот метод;Как правило, вы либо создаете экземпляр ArrayList с известной емкостью, либо в случаях, когда размер списка неизвестен, вам, вероятно, следует рассмотреть возможность использования LinkedList.

Также обратите внимание, что стратегия изменения размера ArrayList обычно реализуется таким образом, что копии массива являются редкой операцией (например, емкость может увеличиваться на 50% при каждом заполнении массива).Другими словами, даже если вы не позвоните заранее ensureCapacity, вы вряд ли заметите какое-либо замедление в вашем коде.

1 голос
/ 31 октября 2011

Приложение может увеличить емкость экземпляра ArrayList перед добавлением большого количества элементов с помощью операции sureCapacity.Это может уменьшить количество инкрементного перераспределения.
ArrayList.ensureCapacity() Увеличивает емкость этого экземпляра ArrayList, если необходимо, чтобы он мог содержать хотя бы количество элементов, указанное в аргументе минимальной емкости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...