SortedList, SortedDictionary и словарь



Я считаю, что SortedList<TKey, TValue>SortedDictionary<TKey, TValue> и Dictionary<TKey, TValue> реализовать тот же интерфейс.




  1. когда мы должны выбрать SortedList и SortedDictionary over Dictionary?

  2. в чем разница между SortedList и SortedDictionary С точки зрения применения?

828   5  

5 ответов:

  1. при повторении элементов в любом из двух, элементы будут отсортированы. Не так с Dictionary<T,V>.

  2. 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).

enter image description here

Я бы упомянул разницу между словарями.

выше изображение показывает, что Dictionary<K,V> равно или быстрее в каждом случае, чем Sorted аналоговый, но если требуется порядок элементов, например, для их печати, один.

Src: http://people.cs.aau.dk/~normark/oop-csharp/html/notes/collections-note-time-complexity-dictionaries.html

чтобы подвести итоги 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>
  1. когда вы хотите, чтобы коллекция была отсортирована по ключу при итерации по нему. Если вам не нужны ваши данные для сортировки, вам лучше использовать только словарь, он будет иметь лучшую производительность.

  2. 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

    Ничего не найдено.