Méthode add() de Java HashSet
add()La méthode estHashSetl'une des méthodes les plus couramment utilisées de la classe, et sa fonction est d'ajouter un élément à l'ensemble.
Syntaxe de la méthode
Description du paramètre
E e: l'élément à ajouter à l'ensemble
Valeur de retour
- Si l'ensemblene contient pasl'élément, l'ajout réussit et renvoie
true - Si l'ensemblecontient déjàl'élément, il ne sera pas ajouté et renvoie
false
Exemple de base
Exemple
public class HashSetExample {
public static void main(String[] args) {
// Créer un HashSet
HashSet<String> fruits = new HashSet<>();
// Ajouter des éléments
boolean isAdded1 = fruits.add("Apple"); // renvoie true
boolean isAdded2 = fruits.add("Banana"); // renvoie true
boolean isAdded3 = fruits.add("Apple"); // renvoie false car Apple existe déjà
System.out.println(fruits); // Sortie : [Apple, Banana]
System.out.println("Première fois que l'on ajoute Apple : " + isAdded1);
System.out.println("Première fois que l'on ajoute Banana : " + isAdded2);
System.out.println("Deuxième fois que l'on ajoute Apple : " + isAdded3);
}
}
Principe sous-jacent de la méthode add()
Comprendreadd()le principe de fonctionnement de la méthode nous aide à mieux utiliserHashSet。
Processus d'ajout d'un élément
- Calculer la valeur de hachage: calculer d'abord celle de l'élément à ajouter
hashCode() - Déterminer l'emplacement de stockage: déterminer l'emplacement de stockage de l'élément dans la table de hachage en fonction de la valeur de hachage
- Vérifier s'il existe déjà:
- Si la position est vide, stocker directement l'élément
- Si la position n'est pas vide, appeler
equals()la méthode pour comparer si les éléments sont identiques
- Décider d'ajouter ou non:
- Si les éléments sont identiques, ne pas ajouter, et renvoyer
false - Si les éléments sont différents (collision de hachage), ils peuvent être stockés à des positions différentes dans le même compartiment
- Si les éléments sont identiques, ne pas ajouter, et renvoyer
Remarques importantes
HashSetDépend de l'élémenthashCode()etequals()methods- Si vous souhaitez stocker des objets personnalisés, vous devez correctement redéfinir ces deux méthodes
- Une implémentation incorrecte peut entraîner un comportement anormal de l'ensemble
Complexité temporelle de la méthode add()
HashSetdeadd()La complexité temporelle de la méthode est **O(1)** dans le cas idéal (aucune collision de hachage). Cela signifie que quel que soit le nombre d'éléments dans l'ensemble, le temps pour ajouter un nouvel élément est à peu près le même.
Cependant, dans un cas extrême (tous les éléments sont hachés vers la même position), la complexité temporelle se dégrade en **O(n)**, car il est nécessaire de parcourir la liste chaînée ou l'arbre rouge-noir pour vérifier si l'élément existe déjà.
Applications pratiques de la méthode add()
Exemple 1 : Déduplication
Exemple
public class DeduplicationExample {
public static void main(String[] args) {
String[] names = {"Alice", "Bob", "Alice", "Charlie", "Bob"};
HashSet<String> uniqueNames = new HashSet<>();
for (String name : names) {
uniqueNames.add(name);
}
System.out.println(uniqueNames); // Sortie : [Alice, Bob, Charlie]
}
}
Exemple 2 : Compter les éléments uniques
Exemple
public class UniqueCounter {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 2, 4, 1, 5};
HashSet<Integer> uniqueNumbers = new HashSet<>();
for (int num : numbers) {
uniqueNumbers.add(num);
}
System.out.println("Nombre d'éléments uniques : " + uniqueNumbers.size()); // Sortie : 5
}
}
Questions fréquentes
1. Pourquoi la méthode add() renvoie-t-elle false lors de l'ajout d'un élément en double ?
Parce queHashSetle principe de conception (du HashSet) n'autorise pas les doublons. Lorsque l'on essaie d'ajouter un élément déjà existant, l'ensemble ne change pas, et la méthode renvoiefalsepour indiquer que l'opération add n'a pas réellement eu lieu.
2. Comment déterminer si deux éléments sont « les mêmes » ?
HashSetUtilisez les règles suivantes pour déterminer si deux éléments sont identiques :
- Comparez d'abord
hashCode()la valeur de retour - Si les valeurs de hachage sont identiques, alors appelez
equals()la méthode pour comparer
Seulement lorsque les deux éléments'hashCode()sont égauxet equals()renvoietruealors seulement sont-ils considérés comme le même élément.
3. Peut-on ajouter une valeur null ?
Oui,HashSetil est permis d'ajouternullune valeur, mais elle ne peut être ajoutée qu'une seule fois (car l'ensemble n'autorise pas les doublons).
Exemple
set.add(null); // retourne true
set.add(null); // retourne false
Résumé
HashSetdeadd()La méthode est utilisée pour ajouter un élément à l'ensemble- Si l'élément existe déjà, il ne sera pas ajouté et retourne
false - La complexité temporelle de cette méthode est O(1) dans le cas idéal
- Une utilisation appropriée
HashSetnécessite de comprendrehashCode()etequals()le rôle de la méthode HashSetIl est très adapté aux scénarios qui nécessitent une recherche rapide et une déduplication
En maîtrisantadd()l'utilisation et les principes de la méthode, vous pouvez l'utiliser plus efficacementHashSetpour résoudre divers problèmes de programmation.
Java HashSet