Wann eine SortedList & lt; TKey, TValue & gt; über ein SortedDictionary & lt; TKey, TValue & gt;

Dies erscheinen mag, um ein Duplikat dieses Fragedie fragt "Was ist der Unterschied zwischen SortedList und SortedDictionary?" Leider sind die Antworten nichts mehr tun, als Zitat in der MSDN-Dokumentation (die eindeutig besagt, dass es performance-und memory-Nutzung Unterschiede zwischen den beiden), aber nicht die Antwort auf die Frage.

In der Tat (und so diese Frage nicht bekommen, die gleichen Antworten), laut MSDN:

Den SortedList<TKey, TValue> generic
Klasse ist ein binärer Suchbaum mit
O(log n) abrufen, wobei n die
Anzahl der Elemente in der Wörterbuch.
In diesem ist es ähnlich wie die
SortedDictionary<TKey, TValue> generic
Klasse. Die beiden Klassen haben ähnliche
Objekt-Modelle, und beide haben O(log n)
- Abruf. Wo der zwei Klassen
Sie unterscheiden sich jedoch in der Speichernutzung und der Geschwindigkeit der
einsetzen und entfernen:

  • SortedList<TKey, TValue> weniger
    Speicher als SortedDictionary<TKey,
    TValue>
    .

  • SortedDictionary<TKey, TValue> hat
    schneller einführen und entfernen
    Operationen für unsortierte Daten, O(log n)
    im Gegensatz zu O(n) für
    SortedList<TKey, TValue>.

  • Wenn die Liste gefüllt ist, alle auf einmal
    von sortierten Daten, SortedList<TKey,
    TValue>
    ist schneller als
    SortedDictionary<TKey, TValue>.

So, klar würde dies indiziert, dass SortedList<TKey, TValue> ist die bessere Wahl es sei denn, Sie müssen schneller, insert-und remove-Operationen für unsortiert Daten.

Bleibt immer noch die Frage, angesichts der Informationen, über welche praktischen (real-world, business case, etc.) Gründe für die Verwendung einer SortedDictionary<TKey, TValue>? Basierend auf den Leistungsdaten, es würde bedeuten, dass es wirklich keine Notwendigkeit zu haben SortedDictionary<TKey, TValue> überhaupt.

InformationsquelleAutor der Frage Scott Dorman | 2009-09-04

Schreibe einen Kommentar