Test mit Null-Elementen
In den vorherigen Schritten haben wir gesehen, wie HashSet
doppelte Nicht-Null-Elemente behandelt. Jetzt wollen wir untersuchen, wie sich HashSet
verhält, wenn wir versuchen, null
-Elemente hinzuzufügen. Das Verständnis, wie Sammlungen null
behandeln, ist wichtig, da es sonst manchmal zu unerwartetem Verhalten oder Fehlern führen kann, wenn dies nicht sorgfältig behandelt wird.
Ein HashSet
erlaubt ein null
-Element. Wenn Sie versuchen, null
mehrmals hinzuzufügen, wird nur das erste null
gespeichert.
Lassen Sie uns unser DuplicateCheck.java
-Programm noch einmal ändern, um dies zu testen.
Öffnen Sie die Datei DuplicateCheck.java
im WebIDE-Code-Editor.
Ändern Sie die main
-Methode, um null
-Werte in die Liste aufzunehmen:
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);
}
}
Hier haben wir null
mehrmals zur names
-Liste hinzugefügt. Wir haben auch die Berechnung der Anzahl der Duplikate auskommentiert, da diese weniger sinnvoll wird, wenn null
beteiligt ist und wir uns auf das Verhalten des Sets mit null
konzentrieren.
Speichern Sie die geänderte Datei DuplicateCheck.java
.
Kompilieren Sie das Programm im Terminal:
javac DuplicateCheck.java
Wenn die Kompilierung erfolgreich ist, führen Sie das Programm aus:
java DuplicateCheck
Sie sollten eine Ausgabe ähnlich der folgenden sehen:
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
Beobachten Sie die Ausgabe:
- Die
Original List
zeigt alle Elemente, einschließlich der mehreren null
-Werte. Ihre Größe beträgt 9.
- Das
Set created from List
enthält nur eindeutige Elemente. Beachten Sie, dass null
nur einmal im Set erscheint, obwohl es mehrmals zur Liste hinzugefügt wurde. Die Größe des Sets beträgt 5 (Alice, Bob, Charlie, David und null).
Dies bestätigt, dass HashSet
ein null
-Element erlaubt und nachfolgende null
-Hinzufügungen wie alle anderen Elemente als Duplikate behandelt.
Sie haben nun erfolgreich getestet, wie HashSet
null
-Elemente behandelt. Dies beendet unsere Untersuchung zur Verwendung von HashSet
zur Duplikatprüfung und zum Verständnis seines Verhaltens mit eindeutigen und null
-Elementen.