Главная » Java » ArrayList

0

 

   Класс представляет собой добротную базовую реализацию интерфейса List, позволяющую хранить элементы списка в виде массива изменяемого размера (resizable array). Операции добавления элементов в конец массива и удаления из конца массива весьма эффективны — их быстродействие оценивается функцией О(1). Получение элемента, расположенного на заданной позиции, также требует временных затрат, соизмеримых с О(1). Чтобы добавить элемент в середину массива или удалить такой элемент, потребуется выполнить, однако, O(n-i) элементарных операций, где n — размер массива, a i — номер позиции элемента, подлежащего вставке или удалению. При добавлении или удалении элемента необходимо осуществить копирование элементов из завершающей части массива на одну позицию "вперед" или "назад".

  Объекту придается свойство емкости (capacity), определяющее количество элементов, которые могут быть сохранены в массиве без необходимости выделения дополнительной порции памяти. По мере добавления в список очередных элементов те сохраняются в массиве, но когда его емкость исчерпывается, вместо исходного должен быть построен новый массив большей емкости. Удачный выбор начального значения емкости способен существенным образом улучшить производительность операций над данными объекта : если в процессе работы исходный объем данных, подлежащих хранению, значительно увеличивается, задание большего начального Качения емкости массива поможет сократить потребность в операциях переопределения массива; впрочем, крайности, как всегда, вредны — задав чрезмерно большое исходное значение емкости, вы попросту утратите некоторый Участок памяти.

  В составе класса имеются три конструктора, которые описаны ниже.

 Public ()

Создает новый объект с емкостью массива, предлагаемой по умолчанию.

public (int initial Capacity)

Создает    новый    объект    ,    способный    обеспечить    хранение initial Capacity элементов без необходимости переопределения массива.

 public (Collection coll)

Конструктор копии: создает новый объект , содержимое которого копируется из coll в том порядке, который устанавливается итератором коллекции. Исходная емкость массива задается равной 110% от размера коллекции coll, что позволяет некоторое время обходиться без операций переопределения массива.

   Класс реализует следующие методы, позволяющие управлять размером емкости массива.

public void trimToSizeO

Устанавливает емкость массива в точности равной текущему размеру списка. Если емкость массива превышает текущее количество элементов, создается новый массив меньшей емкости, в который копируется содержимое исходного массива. Метод позволяет уменьшить расход памяти для хранения списка, хотя и ценой затрат на выполнение вычислений.

public void ensureCapacity(int minCapacity)

Увеличивает емкость массива до значения mi nCapaci ty, если текущая ёмкость меньше, нежели minCapacity. Метод полезно применять непосредственно перед добавлением в список крупных порций данных, чтобы гарантировать необходимость разового обращения к операциям переопределения массива (при вызове метода ensureCapacity), избежав затрат на многократное изменение размера массива по мере вставки очередных элементов.

 

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

  • Комментарии