List<T>
использует массив для хранения элементов:
- Доступ к индексатору (т.е. выборка / обновление) равен O (1)
- Удалить из хвоста O (1)
- Удаление из другого места требует перемещения существующих элементов вверх, поэтому O (n) эффективно
- Добавьте в конец O (1), если только не требуется изменение размера, в этом случае O (n). (Это удваивает размер буфера, поэтому амортизированная стоимость равна O (1).)
- Добавление в другое место требует смещения существующих элементов вниз, поэтому O (n) эффективно
- Поиск элемента - это O (n), если он не отсортирован, и в этом случае бинарный поиск дает O (log n)
Обычно хорошо использовать списки довольно широко. Если вы знаете окончательный размер, когда начинаете заполнять список, рекомендуется использовать конструктор, который позволяет указать емкость, чтобы избежать изменения размера. Кроме того: если вы обеспокоены, вырежьте профилировщик ...