Avant de plonger dans les différences, passons brièvement en revue ce que sont HashSet et TreeSet.
Un HashSet est une collection qui utilise une table de hachage pour le stockage. Il implémente l'interface Set, ce qui signifie qu'il n'autorise pas les éléments en double. Les éléments ne sont ni ordonnés ni triés, ce qui rend HashSet adapté aux scénarios dans lesquels vous avez besoin d'une recherche, d'une insertion et d'une suppression rapides.
Un TreeSet est une collection qui implémente l'interface NavigableSet. Il utilise un arbre rouge-noir pour le stockage, ce qui signifie que les éléments sont stockés de manière triée et ordonnée. TreeSet n'autorise pas non plus les éléments en double, mais il est idéal pour les situations où vous devez conserver un ordre naturel des éléments.
HashSet : Utilise une table de hachage en interne. Le code de hachage de chaque élément est utilisé pour déterminer son emplacement de stockage. Si deux éléments ont le même code de hachage, une technique appelée chaînage ou sondage est utilisée pour gérer les collisions.
Exemple de code :
Set<String> hashSet = new HashSet<>(); hashSet.add("Apple"); hashSet.add("Banana"); hashSet.add("Mango");
TreeSet : Utilise un arbre Rouge-Noir en interne. Chaque élément est placé selon son ordre naturel ou un comparateur fourni, garantissant que l'arbre reste équilibré.
Exemple de code :
Set<String> treeSet = new TreeSet<>(); treeSet.add("Apple"); treeSet.add("Banana"); treeSet.add("Mango");
HashSet et TreeSet n'autorisent pas les éléments en double. Cependant, la méthode de détection des doublons diffère. HashSet utilise les méthodes hashCode () et equals (), tandis que TreeSet utilise le compareTo () ou un Comparator.
HashSet vs LinkedHashSet : Bien que HashSet ne garantit aucun ordre, LinkedHashSet maintient l'ordre d'insertion. TreeSet , quant à lui, trie les éléments naturellement ou par un comparateur personnalisé.
L'exécution des extraits de code ci-dessous démontre la différence dans l'ordre d'itération :
// HashSet Example Set<String> hashSet = new HashSet<>(); hashSet.add("Zebra"); hashSet.add("Apple"); hashSet.add("Mango"); System.out.println("HashSet: " + hashSet); // Output may be unordered, e.g., [Apple, Mango, Zebra] // TreeSet Example Set<String> treeSet = new TreeSet<>(); treeSet.add("Zebra"); treeSet.add("Apple"); treeSet.add("Mango"); System.out.println("TreeSet: " + treeSet); // Output will be sorted, e.g., [Apple, Mango, Zebra]
Le choix entre HashSet et TreeSet dépend de vos besoins spécifiques :
Vous avez des questions ? N'hésitez pas à laisser un commentaire ci-dessous !
Lisez les articles plus sur : Top 10 des différences clés entre HashSet et TreeSet en Java
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!