Retour au cours

Travailler avec l'interface Set (HashSet, TreeSet)

Maîtrise de Java : De Zéro à Développeur Professionnel (Un parcours en 50 leçons)

Leçon 38 : Travailler avec l'interface Set

L'interface Set modélise le concept mathématique d'un ensemble : une collection non ordonnée qui ne contient que des éléments uniques.

1. HashSet

  • Implémentation : Utilise une table de hachage pour le stockage (repose sur le hachage d'objets).
  • Performance : Offre des performances en temps constant (O(1)) pour les opérations de base comme add(), remove() et contains(), en supposant une bonne fonction de hachage.
  • Ordre : Ne garantit pas l'ordre d'insertion.

java import java.util.HashSet; import java.util.Set;

Set uniqueColors = new HashSet<>(); uniqueColors.add("Rouge"); uniqueColors.add("Bleu"); boolean added = uniqueColors.add("Rouge"); // Retourne false, Rouge existe déjà

System.out.println(uniqueColors.size()); // Sortie : 2

// Parcourir un Set (l'ordre n'est pas garanti) for (String color : uniqueColors) { System.out.println(color); }

2. LinkedHashSet

  • Maintient l'ordre d'insertion (parcourt les éléments dans l'ordre où ils ont été ajoutés).
  • Légèrement plus lent que HashSet en raison de la surcharge liée au maintien de la structure de liste chaînée.

3. TreeSet

  • Implémentation : Utilise une structure d'arbre (Arbre Rouge-Noir).
  • Ordre : Stocke les éléments dans leur ordre de tri naturel (ou selon un Comparator personnalisé).
  • Performance : Les opérations sont généralement en O(log N) (temps logarithmique), ce qui le rend plus lent que HashSet mais nécessaire si une sortie triée est requise.

java import java.util.TreeSet;

TreeSet sortedNumbers = new TreeSet<>(); sortedNumbers.add(50); sortedNumbers.add(10); sortedNumbers.add(30);

// Sortie : [10, 30, 50] (Toujours trié) System.out.println(sortedNumbers);