Tester avec des éléments null
Dans les étapes précédentes, nous avons vu comment HashSet
gère les éléments non nuls en double. Maintenant, explorons le comportement de HashSet
lorsque nous essayons d'ajouter des éléments null
. Comprendre comment les collections gèrent les valeurs null
est important car cela peut parfois entraîner des comportements inattendus ou des erreurs si cela n'est pas géré avec soin.
Un HashSet
autorise un seul élément null
. Si vous essayez d'ajouter null
plusieurs fois, seul le premier null
sera stocké.
Modifions encore une fois notre programme DuplicateCheck.java
pour tester cela.
Ouvrez le fichier DuplicateCheck.java
dans l'Éditeur de code de l'IDE Web.
Modifiez la méthode main
pour inclure des valeurs null
dans la liste :
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class DuplicateCheck {
public static void main(String[] args) {
// Create a list with some duplicate and null elements
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add(null); // Add null
names.add("Alice"); // Duplicate
names.add("Charlie");
names.add(null); // Add null again
names.add("Bob"); // Duplicate
names.add("David");
names.add(null); // Add null a third time
System.out.println("Original List: " + names);
System.out.println("Size of Original List: " + names.size());
// Create a HashSet from the list
Set<String> uniqueNamesSet = new HashSet<>(names);
System.out.println("Set created from List: " + uniqueNamesSet);
System.out.println("Size of Set: " + uniqueNamesSet.size());
// The difference in size tells us how many duplicates were removed
// Note: This calculation is less straightforward with nulls and duplicates combined
// int duplicatesCount = names.size() - uniqueNamesSet.size();
// System.out.println("Number of duplicates (excluding first occurrence): " + duplicatesCount);
}
}
Ici, nous avons ajouté null
à la liste names
plusieurs fois. Nous avons également mis en commentaire le calcul du nombre de doublons car il devient moins significatif lorsque null
est impliqué et que nous nous concentrons sur le comportement de l'ensemble avec null
.
Enregistrez le fichier DuplicateCheck.java
modifié.
Compilez le programme dans le Terminal :
javac DuplicateCheck.java
Si la compilation réussit, exécutez le programme :
java DuplicateCheck
Vous devriez voir une sortie similaire à ceci :
Original List: [Alice, Bob, null, Alice, Charlie, null, Bob, David, null]
Size of Original List: 9
Set created from List: [null, Alice, Bob, Charlie, David]
Size of Set: 5
Observez la sortie :
- La
Original List
affiche tous les éléments, y compris les multiples valeurs null
. Sa taille est de 9.
- Le
Set created from List
ne contient que des éléments uniques. Remarquez que null
n'apparaît qu'une seule fois dans l'ensemble, même si il a été ajouté plusieurs fois à la liste. La taille de l'ensemble est de 5 (Alice, Bob, Charlie, David et null).
Cela confirme que HashSet
autorise un seul élément null
et traite les ajouts de null
suivants comme des doublons, tout comme tout autre élément.
Vous avez maintenant testé avec succès le comportement de HashSet
avec des éléments null
. Cela conclut notre exploration de l'utilisation de HashSet
pour la vérification des doublons et la compréhension de son comportement avec des éléments uniques et des éléments null
.