web-dev-qa-db-fra.com

SortedSet <T> vs HashSet <T>

Ma question est la suivante: quel est le besoin de HashSet<T> lorsque nous avons SortedSet<T>! Toutes les méthodes de HashSet sont également disponibles dans SortedSet. De plus, SortedSet est avantageux car il fournit une collection déjà triée! Même alors, HashSet est présent. A quoi sert-il alors?

36
Batrickparry

Si vous n'avez pas besoin de trier, vous ne devriez pas utiliser une classe effectuant le tri car cela signifie que votre application fera plus de travail que nécessaire. (En d'autres termes, votre application sera plus rapide).

65
Jacob

Il s’agit de choisir le bon outil pour le travail. Cela dépend de la façon dont vous allez utiliser votre collection. 

Cette page a un joli tableau détaillant les différences entre les différentes classes de collection. 

Vous trouverez ci-dessous un extrait de ce tableau concernant les collections pour lesquelles vous posez des questions:

 Collection Commander Stockage Contigu? Accès direct? Lookup Efficiency Manipulate Efficiency 
 SortedSet Trié par touche Non: O (journal n) O (journal n) 
 HashSet non ordonné Oui par clé: O (1) O (1).
38
Zar Shardan

Les deux HashSet et SortedSet implémentent un ensemble de structures de données) qui est une structure de données contenant des éléments uniques.

La principale différence entre eux est la structure de données sous-jacente qu'ils utilisent pour stocker des données. HashSet utilise un table de hachage alors que SortedSet utilise un arbre red-back qui est un arbre binaire équilibré.

Le HashSet qui utilise une table de hachage effectue les opérations de base (à savoir, Ajouter, Supprimer, Rechercher) plus rapidement que SortedSet car la complexité de HashSet est O(1), ce qui signifie qu'il effectuera des opérations de base indépendamment de la taille des données d'entrée une période de temps constante pendant que la complexité de SortedSet est log (N), ce qui signifie que la taille de l’entrée dépend des opérations logarithmiques de base. Par exemple, si la taille de vos données d'entrée est de 1 000, le programme effectue les opérations de base en 10 étapes et s'il est 1 000 000, le programme effectue les opérations de base en 20 étapes.

Conclusion: Utilisez HashSet si vous n'avez pas besoin de trier les éléments sinon, utilisez SortedHash. Cela signifie que l'utilisation de HashSet est préférable sauf si vous avez besoin de trier.

0
Behnam Mirzabeygi