Junior
Qu'est-ce que HashMap et Set, et dans quels cas est-il préférable de les utiliser?
sobes.tech IA
Réponse de l'IA
HashMap est une collection qui stocke des paires clé-valeur. Les clés sont uniques, et les valeurs peuvent se répéter. Elle utilise le hachage pour un accès rapide (en moyenne en O(1)) aux éléments par clé.
Set est une collection qui stocke des éléments uniques. Elle ne garantit pas l'ordre de stockage, sauf si une implémentation spécifique est utilisée (par exemple, LinkedHashSet). Les opérations d'ajout, de suppression et de vérification de la présence d'un élément sont généralement effectuées en O(1). Il existe différentes implémentations, par exemple :
HashSet: ne garantit pas l'ordre des éléments.LinkedHashSet: conserve l'ordre d'insertion.TreeSet: stocke les éléments dans un ordre trié.
Quand l'utiliser :
- HashMap :
- Lorsqu'une recherche, une insertion ou une suppression efficace par clé est nécessaire.
- Pour stocker des données associatives (par exemple, un dictionnaire).
- Lorsqu'il faut vérifier rapidement la présence d'une valeur par clé.
- Set :
- Lorsqu'il est nécessaire de stocker uniquement des éléments uniques.
- Pour une vérification efficace de la présence d'un élément dans la collection.
- Pour effectuer des opérations sur des ensembles (union, intersection).
Exemple d'utilisation de HashMap :
// Création de HashMap
HashMap<String, Integer> ages = new HashMap<>();
// Ajout d'éléments
ages.put("Alice", 30);
ages.put("Bob", 25);
ages.put("Charlie", 35);
// Récupération d'une valeur par clé
int ageBob = ages.get("Bob"); // ageBob = 25
// Vérification de la présence d'une clé
boolean contientAlice = ages.containsKey("Alice"); // contientAlice = true
Exemple d'utilisation de HashSet :
// Création de HashSet
HashSet<String> noms = new HashSet<>();
// Ajout d'éléments
noms.add("Alice");
noms.add("Bob");
noms.add("Charlie");
noms.add("Alice"); // Ne sera pas ajouté, car déjà présent
// Vérification de la présence d'un élément
boolean contientBob = noms.contains("Bob"); // contientBob = true
// Itération sur les éléments
for (String nom : noms) {
System.out.println(nom);
}