Dies scheint ein Duplikat von dieser question, die fragt "Was ist der Unterschied zwischen SortedList und SortedDictionary?" Leider geben die Antworten nichts anderes als die MSDN-Dokumentation an (die eindeutig besagt, dass zwischen beiden Leistungsunterschiede und Unterschiede in der Speicherauslastung bestehen), beantworten die Frage jedoch nicht.Wann sollte eine SortedList <TKey, TValue> über ein SortedDictionary <TKey, TValue> verwendet werden?
In der Tat (und so diese Frage nicht die gleichen Antworten bekommt), nach MSDN:
Die
SortedList<TKey, TValue>
generic Klasse ist ein binärer Suchbaum mit O Retrieval (n log), wobei n ist die Anzahl der Elemente im Wörterbuch. In diesem ist es ähnlich derSortedDictionary<TKey, TValue>
generischen Klasse. Die beiden Klassen haben ähnliche Objektmodelle, und beide haben O (log n) Abruf. Wo die beiden Klassen in Speicher zu verwenden und die Geschwindigkeit der Einsetzen und Entfernen unterscheiden ist:
SortedList<TKey, TValue>
verwendet weniger Speicher alsSortedDictionary<TKey, TValue>
.
SortedDictionary<TKey, TValue>
hat schnellere Einsetzen und Entfernen Operationen für unsortierte Daten, O (log n) zu O im Gegensatz (n) fürSortedList<TKey, TValue>
.Wenn die Liste auf einmal bevölkert von sortierten Daten,
SortedList<TKey, TValue>
ist schneller alsSortedDictionary<TKey, TValue>
. So
, klar würde dies darauf hin, dass SortedList<TKey, TValue>
die bessere Wahl ist, es sei denn Sie müssen schneller einsetzen und Operationen für unsortiert Daten entfernen.
Die Frage bleibt immer noch, angesichts der oben genannten Informationen, was sind die praktischen (Real-World, Business Case, etc.) Gründe für die Verwendung eines SortedDictionary<TKey, TValue>
? Basierend auf den Leistungsinformationen würde dies bedeuten, dass es wirklich keinen Bedarf gibt, SortedDictionary<TKey, TValue>
überhaupt zu haben.
Beachten Sie, dass der Abschnitt, den Sie so ziemlich zitieren sagt alles. Beachten Sie jedoch, dass Ihre Aussage über 'Vorgänge schneller einfügen und entfernen für unsortierte Daten' nicht ganz korrekt ist. Was es eigentlich sagt, ist, dass Operationen "Einfügen und Entfernen" immer höhere Zeitkomplexität in einer SortedList sind. Die Aussage über 'unsortierte Daten' bezieht sich nur auf die Initialisierung dieser Strukturen mit Daten durch ihre Konstruktoren. – jerryjvl
Dies scheint für .NET 2.0 relevant zu sein. Die Implementierung von SortedList scheint sich seit 3.0 geändert zu haben. Ich habe kürzlich selbst eine Antwort auf diese Frage benötigt und festgestellt, dass diese Frage und ihre Antworten für Benutzer von .NET 4.5 möglicherweise nicht mehr relevant sind. –
Jeremy