Простой тип данных набора, найденный на некоторых языках / платформы (такой как в Java или.NET). Список массива реализует список с помощью массива, принося пользу от обоих преимуществам DSS.

ArrayList часто обозначает абстрактный тип данных (ADT), найденный на некоторых общих языках программирования / платформа, которая представляет "growable" (динамично измеренный) массив.

В Java:

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).

В.NET:

System.Collections.ArrayList в Библиотеке классов Платформы.NET, как ее дубликат в Java, также представляет динамично измеренный массив. Это стало главным образом устаревшим с введением дженерика System.Collections.Generic.List<T> введите в.NET 2, который имеет преимущество (в большинстве случаев) того, чтобы быть со строгим контролем типов, и предотвращения ненужной упаковки типов значения.

Связанные теги