Может показаться, что это дубликат этого вопроса, который спрашивает: " В чем разница между SortedList и SortedDictionary?" К сожалению, ответы не более чем цитируют документацию MSDN (в которой четко указано, что между ними есть различия в производительности и использовании памяти), но фактически не отвечают на вопрос.
Фактически (и поэтому на этот вопрос нет одинаковых ответов), согласно MSDN:
Общий класс
SortedList<TKey, TValue>
- это двоичное дерево поиска с извлечением O (log n), где n - количество элементов в словаре. В этом он похож на общий классSortedDictionary<TKey, TValue>
. Эти два класса имеют похожие объектные модели, и оба имеют извлечение O (log n). Разница между этими двумя классами заключается в использовании памяти и скорости вставки и удаления:
SortedList<TKey, TValue>
использует меньше памяти, чемSortedDictionary<TKey, TValue>
.
SortedDictionary<TKey, TValue>
имеет более быстрые операции вставки и удаления для несортированных данных, O (log n), в отличие от O (n) дляSortedList<TKey, TValue>
.Если список заполняется сразу из отсортированных данных,
SortedList<TKey, TValue>
быстрее, чемSortedDictionary<TKey, TValue>
.
Таким образом, очевидно, что это означало бы, что SortedList<TKey, TValue>
- лучший выбор, если вам не нужны более быстрые операции вставки и удаления для несортированных данных.
Вопрос все еще остается, учитывая приведенную выше информацию, каковы практические (реальные, экономические и т. Д.) Причины использования SortedDictionary<TKey, TValue>
? Основываясь на информации о производительности, это будет означать, что в SortedDictionary<TKey, TValue>
вообще нет необходимости.