2009-09-15 41 views
65

Ich finde, dass SortedDictionary<TKey, TValue> und Dictionary<TKey, TValue> die gleichen Schnittstellen implementieren.SortedList <>, SortedDictionary <> und Dictionary <>

  1. Wann sollten wir für SortedList und SortedDictionary über Dictionary entscheiden?
  2. Was ist der Unterschied zwischen SortedList und SortedDictionary in Bezug auf die Anwendung?
+0

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

Antwort

71
  1. Wenn in einem der beiden über die Elemente iteriert werden die Elemente sortiert werden. Nicht so mit Dictionary<T,V>.

  2. MSDN Adressen der Unterschied zwischen SortedList<T,V> und SortedDictionary<T,V>:

Die SortedDictionary (TKey, TValue) generische Klasse ist ein binary search tree mit O (log n) Retrieval, wobei n die Anzahl der Elemente ist, in das Wörterbuch. In dieser Hinsicht ähnelt es der generischen Klasse SortedList (TKey, TValue). Die beiden Klassen haben ähnliche Objektmodelle und beide haben O (Log n) Abruf. Wo die zwei Klassen unterscheiden, ist in Speicher verwenden und die Geschwindigkeit der Einführung und Entfernung:

SortedList (TKey, TValue) verbraucht weniger Speicherplatz als SortedDictionary (TKey, TValue).

SortedDictionary (TKey, TValue) hat schnellere Einsetzen und Entfernen Operationen für unsortierte Daten: O (log n) in Bezug auf O gegen (n) für SortedList (TKey, TValue).

Wenn die Liste gleichzeitig aus sortierten Daten besteht, ist SortedList (TKey, TValue) schneller als SortedDictionary (TKey, TValue).

+8

Ein weiterer praktischer Unterschied, dass Sie in 'SortedList' per Index (im Gegensatz zum Abrufen per Schlüssel) abrufen können und in' SortedDictionary' nicht. –

8
  1. Wenn Sie die Sammlung wollen nach Schlüssel sortiert werden, wenn Sie über sie iterieren. Wenn Sie Ihre Daten nicht sortieren müssen, ist es besser, wenn Sie nur ein Wörterbuch verwenden.

  2. SortedList und SortedDictionary tun ziemlich genau dasselbe, sind aber unterschiedlich implementiert, haben also unterschiedliche Stärken und Schwächen explained here.

10

Um die Ergebnisse eines Performance Test - SortedList vs. SortedDictionary vs. Dictionary vs. Hashtable, die Ergebnisse vom besten zum schlechtesten für verschiedene Szenarien zusammenfassen:

Speichernutzung:

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

Einfügungen:

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

Suchoperationen:

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

foreach Schleifenoperationen

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