Это может показаться, что дубликат этого вопроса, который спрашивает: " В чем разница между SortedList и SortedDictionary?" К сожалению, ответы не более чем цитируют документацию MSDN (в которой четко указано, что между ними есть различия в производительности и использовании памяти), но на самом деле не отвечают на вопрос.
На самом деле (и поэтому на этот вопрос нет одинаковых ответов), согласно MSDN:
SortedList<TKey, TValue>
класс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>
.