Поделиться через


Типы коллекций ArrayList и List

Обновлен: Ноябрь 2007

Объекты ArrayList и List<T> являются сложными версиями массива. Класс ArrayList и универсальный класс List<T> предоставляет некоторые возможности, содержащиеся в большинстве классов System.Collections, но не в классе Array. Например:

  • Вместимость Array фиксирована, в то время как вместимость ArrayList или List<T> автоматически увеличивается по мере необходимости. При изменении значения свойства Capacity перераспределение памяти и копирование элементов происходит автоматически.

  • ArrayList и List<T> предоставляют методы для добавления, вставки или удаления диапазона элементов. В Array можно получить или изменить значение только одного элемента за раз.

  • Синхронизированную версию объекта ArrayList легко создать с помощью метода Synchronized. В Array реализация синхронизации осуществляется пользователем.

  • ArrayList и List<T> предоставляют методы, возвращающие в коллекцию оболочки только для чтения и оболочки фиксированного размера. В Array такие методы отсутствуют.

С другой стороны, Array предлагает некоторую гибкость, которой не обладают ArrayList и List<T>. Например:

  • Можно установить нижнюю границу Array, но нижняя граница ArrayList или List<T> всегда равна нулю.

  • В Array поддерживается несколько измерений, а в ArrayList и List<T> — только одно измерение.

  • Array определенного типа (отличного от Object) обладает лучшей производительностью по сравнению с ArrayList, так как элементы ArrayList имеют тип Object и, следовательно, при сохранении или извлечении типа значения происходит упаковка и распаковка. Однако List<T> может иметь сравнимую производительность с массивом аналогичного типа, если не происходит перераспределения, то есть если исходная емкость близко соответствует максимальному размеру списка.

В большинстве случаев, в которых требуется использовать массив, можно использовать ArrayList или List<T>, поскольку они более просты в применении и в целом имеют производительность, сравнимую с массивом объектов аналогичного типа.

Array находится в пространстве имен System. ArrayList находится в пространстве имен System.Collections. List<T> находится в пространстве имен System.Collections.Generic.

См. также

Ссылки

ArrayList

System.Collections

List<T>

System.Collections.Generic

Array

Другие ресурсы

Часто используемые типы коллекций