it-swarm.com.de

SortedSet <T> gegen HashSet <T>

Meine Frage ist, was ist der Bedarf von HashSet<T>, wenn wir SortedSet<T> haben! Alle HashSet-Methoden sind auch in SortedSet verfügbar, außerdem ist SortedSet von Vorteil, da es bereits eine sortierte Sammlung bereitstellt. Selbst dann ist HashSet anwesend. Für was ist es dann nützlich?

36
Batrickparry

Wenn Sie keine Sortierung benötigen, sollten Sie keine Klasse zum Sortieren verwenden, da Ihre Anwendung dadurch mehr Arbeit erledigt, als nötig ist. (Damit wird Ihre App schneller, mit anderen Worten).

65
Jacob

Hier geht es darum, das richtige Werkzeug für den Job auszuwählen. Hängt davon ab, wie Sie Ihre Sammlung verwenden. 

Diese Seite hat eine Nice-Tabelle, in der die Unterschiede zwischen den verschiedenen Sammelklassen aufgeführt sind. 

Nachfolgend finden Sie einen Auszug aus dieser Tabelle zu den Sammlungen, nach denen Sie gefragt werden:

 Sammlung zusammenhängender Lagerung bestellen? Direkter Zugang? Effizienz beim Nachschlagen Effizienz beeinflussen 
 SortedSet Sorted No Key: O (log n) O (log n) 
 HashSet Unordered Ja.
38
Zar Shardan

Beide HashSet und SortedSet implementieren einen Datenstruktursatz, der eine Datenstruktur ist, die eindeutige Elemente enthält.

Der Hauptunterschied zwischen ihnen ist die zugrunde liegende Datenstruktur, die sie zum Speichern von Daten verwenden. HashSet verwendet eine hash-table während SortedSet einen red-back-Baum verwendet der ein ausgeglichener binärer Baum ist.

Das HashSet, das eine Hashtabelle verwendet, führt die Grundoperationen (dh Hinzufügen, Entfernen, Suchen) schneller als SortedSet aus, da die Komplexität von HashSet O(1) ist. Dies bedeutet, dass grundlegende Operationen unabhängig von der Größe der Eingangsdaten ausgeführt werden Eine konstante Zeitdauer, während die Komplexität von SortedSet log (N) bedeutet, hängt von der Größe der Eingabe ab, die die grundlegenden Operationen logarithmisch ausführt. Wenn zum Beispiel die Größe Ihrer Eingabedaten 1.000 beträgt, führt das Programm die grundlegenden Operationen in 10 Schritten aus, und wenn es 1.000.000 ist, führt das Programm die grundlegenden Operationen in 20 Schritten aus.

Fazit: Verwenden Sie HashSet wenn Sie die Elemente nicht sortieren müssen verwenden Sie sonst SortedHash. Die Verwendung von HashSet ist bevorzugt , es sei denn, Sie müssen sortiert werden.

0