Meine Frage ist, was ist der Bedarf von HashSet<T>
, wenn wir SortedSet<T>
haben! Alle Methoden von HashSet sind auch in SortedSet verfügbar, außerdem ist SortedSet vorteilhaft, da es die Sammlung bereits sortiert bereitstellt! Auch dann ist HashSet vorhanden. Für was ist es dann nützlich?SortedSet <T> vs HashSet <T>
Antwort
Wenn Sie keine Sortierung benötigen, sollten Sie keine Sortierklasse verwenden, da dies bedeutet, dass Ihre Anwendung mehr Arbeit leistet als benötigt wird. (Es wird Ihre App schneller machen, mit anderen Worten).
Noch wichtiger, der Algorithmus wird schneller ausgeführt. Hashing ist O (1), wohingegen die sortierte Menge wahrscheinlich einen binären Suchbaum verwendet, der im Durchschnitt O (log n) ist - eine weitaus schlechtere Leistung. –
In diesem Fall können wir die Liste
Set für eindeutige Elemente, Liste kann doppelte Einträge enthalten. http://msdn.microsoft.com/en-us/library/bb359438.aspx für die HashSet
Hier geht es darum, das richtige Werkzeug für den Job zu wählen. Das hängt davon ab, wie Sie Ihre Sammlung verwenden.
This page hat eine schöne Tabelle mit den Unterschieden zwischen den verschiedenen Klassen.
Im Folgenden ein Auszug aus dieser Tabelle die Sammlungen über Sie fragen nach:
Collection Ordering Contiguous Storage? Direct Access? Lookup Efficiency Manipulate Efficiency SortedSet Sorted No Via Key Key:O(log n) O(log n) HashSet Unordered Yes Via Key Key:O(1) O(1)
- 1. Wie benutze ich CMake Generator Ausdruck $ <TARGET_FILE: tgt>?
- 2. Oracle - "Sql Entwickler" Datenbank kopieren Dienstprogramm - Src/tgt anderes Schema
- 3. PHP: <<< vs ob_start
- 4. Aufruf Distinct <>() auf HashSet <T>
- 5. Concat HashSet <String> und IList <String>
- 6. <%# %> vs <%= %>
- 7. Make HashSet <string> case-insensitive
- 8. <applet> vs <object>
- 9. <?> vs <T>
- 10. GameObject.FindObjectOfType <>() vs GetComponent <>()
- 11. ASP.NET <%= %> vs <%: %>
- 12. Rails ERB <%- ... -%> vs. <% ... %>
- 13. Wie definiere ich den Vergleicher auf SortedSet <> wie TreeSet <>?
- 14. SortedSet <T> und anonymer IComparer <T> im Konstruktor funktioniert nicht
- 15. Katzendatei | ... vs ... <Datei
- 16. Werden verwandte Datensätze in HashSet oder SortedSet geladen?
- 17. GSSException: Keine gültigen Anmeldeinformationen zur Verfügung gestellt (Mechanismus-Ebene: Kerberos tgt konnte nicht gefunden werden)
- 18. IEnumerable <T> VS IList <T> VS IQueryable <T>
- 19. Rails ERb Best Practices (<% %> vs <% -%> vs <%- -%>)
- 20. XSD Formatierung <element><complexType> vs <complex /><element/>
- 21. Hashset vs. IQueryable
- 22. „<<<<<<“ Symbol im Quellcode
- 23. „<>“ vs „NOT IN“
- 24. "String.h" VS <string.h>
- 25. Wie konvertiert man die Liste <T> zu HashSet <T> in C#?
- 26. C# HashSet <T> Suchleistung (im Vergleich zu einer ObservableCollection <T>)?
- 27. EL benutzerdefinierte Funktion, wie HashSet <Integer> in <Funktionssignatur> zu deklarieren?
- 28. C# Zeitkomplexität von Array [T] .Contains (T Artikeln) vs HashSet <T> .Contains (T Artikel)
- 29. Ist Enumerable.ElementAt <TSource> O (1) für HashSet?
- 30. Enthält von HashSet <Integer> in Python
Was ist, wenn Sie haben eine Reihe von Dingen, die nicht über eine Wohlordnung in erster Linie haben? Wie würdest du zum Beispiel eine * sortierte * Menge von Punkten in drei Räumen machen? Was würdest du sortieren? –
auf Tuple.Create (x, y, z) :) – Grozz
HashSet Wenn Sie möchten, dass Elemente unsortiert und einzigartig sind? Von MSDN> Die HashSet Klasse bietet > Hochleistungs-Set-Operationen. Eine Menge > ist eine Sammlung, die keine > doppelte Elemente enthält und deren Elemente > in keiner bestimmten Reihenfolge sind. http://msdn.microsoft.com/en-us/library/bb359438.aspx –
OnesimusUnbound