2009-09-15 32 views
65

Uważam, że SortedList<TKey, TValue> i Dictionary<TKey, TValue> implementują te same interfejsy.SortedList <>, SortedDictionary <> i Dictionary <>

  1. Kiedy powinniśmy zdecydować się SortedList i SortedDictionary nad Dictionary?
  2. Jaka jest różnica między SortedList a SortedDictionary pod względem zastosowania?
+0

Zobacz http://stackoverflow.com/questions/935621/whats-the-difference-between-sortedlist-and -sorteddictionary – nawfal

Odpowiedz

71
  1. podczas iteracji przez elementy w jeden z dwóch elementów są sortowane. Nie tak z Dictionary<T,V>.

  2. MSDN adresy różnica między SortedList<T,V> i SortedDictionary<T,V>:

SortedDictionary (TKey, TValue) klasę, to binary search tree z O (log n) odzyskiwania, w którym n oznacza liczbę elementów w słowniku . Pod tym względem jest podobny do klasy ogólnej SortedList (TKey, TValue). Obie klasy mają podobne modele obiektowe, a mają odbiór O (log n). W przypadku, gdy dwie grupy różnią się w wykorzystania pamięci, a szybkość wprowadzania i usuwania:

SortedList (t w, TValue) zużywa mniej pamięci niż SortedDictionary (t w, TValue).

SortedDictionary (TKey, TValue) ma szybszy montaż i demontaż operacji dla niesegregowanych danych: o (log n), w przeciwieństwie do O (n) w przypadku SortedList (t w, TValue).

Jeżeli lista jest pusta naraz z posortowanych danych, SortedList (TKey, TValue) jest szybsza niż SortedDictionary (TKey, TValue).

+8

Inna praktyczna różnica, że ​​w 'SortedList' można pobrać według indeksu (w odróżnieniu od pobierania przez klucz) iw' SortedDictionary' nie można. –

8
  1. Gdy chcesz kolekcja być klasyfikowane według klucza gdy iteracyjne nad nim. Jeśli nie chcesz, aby Twoje dane były sortowane, lepiej, jeśli masz tylko słownik, będzie to miało lepszą wydajność.

  2. SortedList i SortedDictionary w dużym stopniu robią to samo, ale są wdrażane inaczej, dlatego mają różne mocne i słabe strony: explained here.

10

Podsumowując wyniki Performance Test - SortedList vs. SortedDictionary vs. Dictionary vs. Hashtable, wyniki z najlepszego do najgorszego dla różnych scenariuszy: Wykorzystanie

Pamięć:

SortedList<T,T> 
Hashtable 
SortedDictionary<T,T> 
Dictionary<T,T> 

wstawienia:

Dictionary<T,T> 
Hashtable 
SortedDictionary<T,T> 
SortedList<T,T> 

wyszukiwania Operacje:

Hashtable 
Dictionary<T,T> 
SortedList<T,T> 
SortedDictionary<T,T> 

operacje pętli foreach

SortedList<T,T> 
Dictionary<T,T> 
Hashtable 
SortedDictionary<T,T> 
Powiązane problemy