В классе ArrayList
поддерживаются динамические массивы, расширяющиеся и сокращающиеся по мере необходимости. В языке C# стандартные массивы имеют фиксированную длину, которая не может изменяться во время выполнения программы. Это означает, что количество элементов в массиве нужно знать заранее. Но иногда требуемая конкретная длина массива остается неизвестной до самого момента выполнения программы. Именно для таких ситуаций и предназначен класс ArrayList
. В классе ArrayList
определяется массив переменной длины, который состоит из ссылок на объекты и может динамически увеличивать и уменьшать свой размер. Массив типа ArrayList
создается с первоначальным размером. Если этот размер превышается, то массив автоматически расширяется. А при удалении объектов из такого массива он автоматически сокращается. Коллекции класса ArrayList
широко применяются в практике программирования на С#. Именно поэтому они рассматриваются здесь подробно. Но многие способы применения коллекций класса ArrayList
распространяются и на другие коллекции, в том числе и на обобщенные.
В классе ArrayList
реализуются интерфейсы ICollection
, IList
, IEnumerable
и ICloneable
. Ниже приведены конструкторы класса ArrayList
.
public ArrayList()
public ArrayList(ICollection с)
public ArrayList(int capacity)
Первый конструктор создает пустую коллекцию класса ArrayList
с нулевой первоначальной емкостью. Второй конструктор создает коллекцию типа ArrayList
с количеством инициализируемых элементов, которое определяется параметром с и равно первоначальной емкости массива. Третий конструктор создает коллекцию, имеющую указанную первоначальную емкость, определяемую параметром ArrayList
может увеличиваться автоматически по мере добавления в нее элементов.
В классе ArrayList
определяется ряд собственных методов, помимо тех, что уже объявлены в интерфейсах, которые в нем реализуются. Некоторые из наиболее часто используемых методов класса ArrayList
перечислены в табл. 25.4. Коллекцию класса ArrayList
можно отсортировать, вызвав метод Sort()
. В этом случае поиск в отсортированной коллекции с помощью метода BinarySearch()
становится еще более эффективным. Содержимое коллекции типа ArrayList
можно также обратить, вызвав метод Reverse()
.
Таблица 25.4. Наиболее часто используемые методы, определенные в классе ArrayList
Метод - Описание
public virtual void AddRange(Icollection с) public virtual int BinarySearch(object
public virtual int BinarySearcii (object
public virtual int BinarySearch(int
public virtual void CopyTo(Array
public virtual void CopyTo(Array