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