Простой тип данных набора, найденный на некоторых языках / платформы (такой как в Java или.NET). Список массива реализует список с помощью массива, принося пользу от обоих преимуществам DSS.
ArrayList
часто обозначает абстрактный тип данных (ADT), найденный на некоторых общих языках программирования / платформа, которая представляет "growable" (динамично измеренный) массив.
java.util.ArrayList
класс в библиотеке стандарта Java SE, которая реализует интерфейс List. ArrayList
класс представляет содержание списка с помощью Object
массив, который это перераспределяет как требуется для размещения роста списка.
Сложность общих List
операции на массивах следующие:
List.add(Object)
- O(1)
амортизируемый (см. ниже).List.get(int)
- O(1)
List.remove(int)
- O(N)
в общем случаеList.contains(Object)
- O(N)
в общем случаеАмортизируемая стоимость add
основан на следующем аргументе. Предположим, что Вы запускаете со списка пустого массива и добавляете N
элементы по одному. Каждый раз Вы добавляете элемент, добавить проверки метода, если вспомогательный массив списка полон. Если это, то это выделяет новый вспомогательный массив дважды размера как текущий и затем копирует существующие элементы от старого массива до нового. При подсчете количества копий элемента, которые происходят в этом процессе, Вы найдете это, когда размер массива расширится до N == initial * 2^P
, в общей сложности initial *2^P - 1
копии произойдут, и это - меньше, чем N
копии. Затем добавьте N
присвоения новых элементов, и граничные проверки и общая стоимость явно пропорциональны N
, при накоплении N
вызовы к add
. Затем делает среднюю стоимость единственного вызова константой; т.е. O(1)
.
System.Collections.ArrayList
в Библиотеке классов Платформы.NET, как ее дубликат в Java, также представляет динамично измеренный массив. Это стало главным образом устаревшим с введением дженерика System.Collections.Generic.List<T>
введите в.NET 2, который имеет преимущество (в большинстве случаев) того, чтобы быть со строгим контролем типов, и предотвращения ненужной упаковки типов значения.