Java HashSet add()-Methode
add()Die Methode istHashSeteine der am häufigsten verwendeten Methoden in der Klasse, und ihre Funktion besteht darin, ein Element zum Set hinzuzufügen.
Methodensyntax
Parameterbeschreibung
E e: das Element, das dem Set hinzugefügt werden soll
Rückgabewert
- Wenn die Mengenichtdas Element enthält, ist das Hinzufügen erfolgreich und gibt zurück
true - Wenn die Mengebereitsdas Element enthält, wird es nicht hinzugefügt und gibt zurück
false
Einfaches Beispiel
Beispiel
public class HashSetExample {
public static void main(String[] args) {
// Ein HashSet erstellen
HashSet<String> fruits = new HashSet<>();
// Elemente hinzufügen
boolean isAdded1 = fruits.add("Apple"); // gibt true zurück
boolean isAdded2 = fruits.add("Banana"); // gibt true zurück
boolean isAdded3 = fruits.add("Apple"); // gibt false zurück, weil Apple bereits existiert
System.out.println(fruits); // Ausgabe: [Apple, Banana]
System.out.println("Erstes Hinzufügen von Apple: " + isAdded1);
System.out.println("Erstes Hinzufügen von Banana: " + isAdded2);
System.out.println("Zweites Hinzufügen von Apple: " + isAdded3);
}
}
Zugrundeliegendes Prinzip der add()-Methode
Verständnisadd()Das Funktionsprinzip der Methode hilft uns, sie besser zu nutzenHashSet。
Vorgang des Hinzufügens eines Elements
- Hashwert berechnen: Zuerst den Hashwert des hinzuzufügenden Elements berechnen
hashCode() - Speicherort bestimmen: Anhand des Hashwerts den Speicherort des Elements in der Hash-Tabelle bestimmen
- Prüfen, ob es bereits vorhanden ist:
- Wenn die Position leer ist, das Element direkt speichern
- Wenn die Position nicht leer ist, aufrufen
equals()Methode zum Vergleichen, ob die Elemente gleich sind
- Entscheiden, ob hinzugefügt werden soll:
- Wenn die Elemente gleich sind, nicht hinzufügen und return
false - Wenn die Elemente unterschiedlich sind (Hash-Kollision), können sie an unterschiedlichen Positionen im selben Bucket gespeichert werden
- Wenn die Elemente gleich sind, nicht hinzufügen und return
Wichtige Hinweise
HashSetHängt vom Element abhashCode()undequals()methods- Wenn du benutzerdefinierte Objekte speichern möchtest, musst du diese beiden Methoden korrekt überschreiben
- Eine fehlerhafte Implementierung kann zu abnormalem Set-Verhalten führen
Zeitkomplexität der add()-Methode
HashSetvonadd()Die Zeitkomplexität der Methode ist im Idealfall (keine Hash-Kollision) **O(1)**. Das bedeutet, dass unabhängig davon, wie viele Elemente im Set enthalten sind, die Zeit zum Hinzufügen eines neuen Elements ungefähr gleich ist.
Im Extremfall (alle Elemente werden auf dieselbe Position gehasht) verschlechtert sich die Zeitkomplexität jedoch zu **O(n)**, da die verkettete Liste oder der Rot-Schwarz-Baum durchlaufen werden muss, um zu prüfen, ob das Element bereits existiert.
Praktische Anwendungen der add()-Methode
Beispiel 1: Deduplizierung
Beispiel
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); // Ausgabe: [Alice, Bob, Charlie]
}
}
Beispiel 2: Zählen eindeutiger Elemente
Beispiel
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("Anzahl eindeutiger Elemente: " + uniqueNumbers.size()); // Ausgabe: 5
}
}
Häufig gestellte Fragen
1. Warum gibt die add()-Methode false zurück, wenn ein doppeltes Element hinzugefügt wird?
WeilHashSetdas Designprinzip (von HashSet) lässt keine doppelten Elemente zu. Beim Versuch, ein bereits vorhandenes Element hinzuzufügen, ändert sich das Set nicht, und die Methode gibtfalsezurück, um anzuzeigen, dass die add-Operation tatsächlich nicht ausgeführt wurde.
2. Wie bestimmt man, ob zwei Elemente "gleich" sind?
HashSetVerwenden Sie die folgenden Regeln, um zu bestimmen, ob zwei Elemente gleich sind:
- Vergleichen Sie zuerst den
hashCode()Rückgabewert - Wenn die Hashwerte gleich sind, rufen Sie dann die
equals()Methode zum Vergleichen auf
Nur wenn die beiden ElementehashCode()gleich sindund equals()zurückgibttruenur dann werden sie als dasselbe Element betrachtet.
3. Kann ein null-Wert hinzugefügt werden?
Ja,HashSetes ist erlaubt, hinzuzufügennullWert, aber er kann nur einmal hinzugefügt werden (weil das Set keine Duplikate zulässt).
Beispiel
set.add(null); // gibt true zurück
set.add(null); // gibt false zurück
Zusammenfassung
HashSetvonadd()Die Methode wird verwendet, um ein Element zum Set hinzuzufügen- Wenn das Element bereits existiert, wird es nicht hinzugefügt und gibt zurück
false - Die Zeitkomplexität dieser Methode ist O(1) im Idealfall
- Sachgemäße Verwendung
HashSeterfordert VerständnishashCode()undequals()die Rolle der Methode HashSetEs eignet sich sehr gut für Szenarien, die schnelles Nachschlagen und Deduplizierung erfordern
Durch die Beherrschungadd()die Verwendung und die Prinzipien der Methode, können Sie effektiver nutzenHashSetum verschiedene Programmierprobleme zu lösen.
Java HashSet