SortedList, SortedDictionary и словарь
Я считаю, что SortedList<TKey, TValue>SortedDictionary<TKey, TValue> и Dictionary<TKey, TValue> реализовать тот же интерфейс.
- когда мы должны выбрать
SortedListиSortedDictionaryoverDictionary? - в чем разница между
SortedListиSortedDictionaryС точки зрения применения?
5 ответов:
при повторении элементов в любом из двух, элементы будут отсортированы. Не так с
Dictionary<T,V>.MSDN устраняет разницу между
SortedList<T,V>иSortedDictionary<T,V>:универсальный класс SortedDictionary(TKey, TValue) - это бинарный поиск дерево с извлечением O (log n), где n-количество элементов в словарь. В этом отношении он похож на SortedList(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).
Я бы упомянул разницу между словарями.
выше изображение показывает, что
Dictionary<K,V>равно или быстрее в каждом случае, чемSortedаналоговый, но если требуется порядок элементов, например, для их печати, один.
чтобы подвести итоги a тест производительности-SortedList против SortedDictionary против Dictionary против Hashtable, результаты от лучшего к худшему для различных сценариев:
Памяти:
SortedList<T,T> Hashtable SortedDictionary<T,T> Dictionary<T,T>вставка:
Dictionary<T,T> Hashtable SortedDictionary<T,T> SortedList<T,T>Оперативно-Розыскных Мероприятий:
Hashtable Dictionary<T,T> SortedList<T,T> SortedDictionary<T,T>операции цикла foreach
SortedList<T,T> Dictionary<T,T> Hashtable SortedDictionary<T,T>
когда вы хотите, чтобы коллекция была отсортирована по ключу при итерации по нему. Если вам не нужны ваши данные для сортировки, вам лучше использовать только словарь, он будет иметь лучшую производительность.
SortedList и SortedDictionary в значительной степени делают одно и то же, но реализуются по-разному, поэтому имеют разные сильные и слабые стороны пояснил, что.
попытка присвоить оценка производительности для каждого случая, представленного @Lev, я использовал следующие значения:
- O (1) = 3
- O (log n) = 2
- O (n) = 1
- O (1) или O(n) = 2
- O (log n) или O(n) = 1.5
результаты (выше = лучше):
Dictionary: 12.0 SortedDictionary: 9.0 SortedList: 6.5конечно, каждый случай использования придаст больше веса определенным операциям.

Comments