Java HashSet Klasse: Ein Anfänger-Leitfaden
Einführung
Hallo, zukünftige Java-Entwickler! Heute tauchen wir in die faszinierende Welt des HashSet in Java ein. Keine Sorge, wenn du neu in der Programmierung bist; ich werde dich auf dieser Reise Schritt für Schritt führen, genau wie ich es für unzählige Studenten in meinen Jahren des Unterrichtens getan habe. Denk an HashSet als eine magische Box, die einzigartige Artikel speichern kann – keine Duplikate erlaubt! Es ist wie ein spezieller Schublade, in der du nur ein Paar von jedemSockentyp legen kannst. Los geht's!
Klassendeklaration
In Java ist HashSet Teil des Java Collections Framework. Um es zu verwenden, müssen wir es zuerst importieren:
import java.util.HashSet;
Die grundlegende Deklaration eines HashSet sieht so aus:
HashSet<E> hs = new HashSet<E>();
Hier ist 'E' ein Platzhalter für den Typ der Elemente, die du in deinem HashSet speichern möchtest. Zum Beispiel, wenn du Strings speichern möchtest:
HashSet<String> fruitBasket = new HashSet<String>();
Parameter
Beim Erstellen eines HashSet kannst du zwei optionale Parameter angeben:
- Anfangskapazität: Die Anzahl der "Kübel" die HashSet verwendet, um Elemente zu speichern.
- Belastungsfaktor: Eine Maß für wie voll das HashSet sein kann, bevor es automatisch in der Größe erhöht wird.
Mach dir keine großen Sorgen um diese für den Moment. Denk daran, sie sind als erweiterte Einstellungen für deine magische Box!
Klassenkonstruktoren
HashSet bietet vier Konstruktoren. Sehen wir uns jeden von ihnen an:
// Konstruktor 1: Erstellt ein leeres HashSet mit der Standardanfangskapazität (16) und Belastungsfaktor (0.75)
HashSet<String> set1 = new HashSet<>();
// Konstruktor 2: Erstellt ein HashSet, das Elemente der angegebenen Sammlung enthält
Collection<String> collection = Arrays.asList("Apfel", "Banane", "Kirsche");
HashSet<String> set2 = new HashSet<>(collection);
// Konstruktor 3: Erstellt ein leeres HashSet mit der angegebenen Anfangskapazität und dem Standardbelastungsfaktor (0.75)
HashSet<String> set3 = new HashSet<>(20);
// Konstruktor 4: Erstellt ein leeres HashSet mit der angegebenen Anfangskapazität und Belastungsfaktor
HashSet<String> set4 = new HashSet<>(20, 0.8f);
Klassenmethoden
Hier ist eine Tabelle der am häufigsten verwendeten HashSet-Methoden:
Methode | Beschreibung |
---|---|
add(E e) | Fügt das angegebene Element zu dieser Menge hinzu, wenn es noch nicht vorhanden ist |
clear() | Entfernt alle Elemente aus dieser Menge |
contains(Object o) | Gibt true zurück, wenn diese Menge das angegebene Element enthält |
isEmpty() | Gibt true zurück, wenn diese Menge keine Elemente enthält |
remove(Object o) | Entfernt das angegebene Element aus dieser Menge, wenn es vorhanden ist |
size() | Gibt die Anzahl der Elemente in dieser Menge zurück |
Vererbte Methoden
HashSet erbt Methoden von seinen Elternklassen. Einige bemerkenswerte davon sind:
- Von Set: addAll(), containsAll(), equals(), hashCode(), removeAll(), retainAll()
- Von Collection: iterator(), toArray()
- Von Object: clone(), finalize(), getClass(), notify(), notifyAll(), wait()
Beispiel zum Hinzufügen von Elementen zu einem HashSet
Lassen Sie uns unseren Wissen mit einem lustigen Beispiel in die Praxis umsetzen. Stell dir vor, wir erstellen ein Programm, um einzigartige Eiscreme-Sorten in unserem Shop zu verfolgen:
import java.util.HashSet;
public class EiscremeShop {
public static void main(String[] args) {
// Erstellt ein neues HashSet, um Eiscreme-Sorten zu speichern
HashSet<String> sorten = new HashSet<>();
// Füge einige Sorten hinzu
sorten.add("Vanille");
sorten.add("Schokolade");
sorten.add("Erdbeere");
sorten.add("Minz-Chip");
// Versuche, eine Dublette hinzuzufügen
boolean hinzugefuegt = sorten.add("Vanille");
System.out.println("Vanille erneut hinzugefügt? " + hinzugefuegt);
System.out.println("Unsere Eiscreme-Sorten: " + sorten);
System.out.println("Wir haben " + sorten.size() + " einzigartige Sorten!");
// Überprüfe, ob wir eine bestimmte Sorte haben
String sucheSorte = "Rocky Road";
if (sorten.contains(sucheSorte)) {
System.out.println("Ja, wir haben " + sucheSorte + "!");
} else {
System.out.println("Entschuldigung, wir haben keine " + sucheSorte + ".");
}
// Entferne eine Sorte
sorten.remove("Erdbeere");
System.out.println("Aktualisierte Sorten nach dem Entfernen von Erdbeere: " + sorten);
}
}
Ausgabe
Wenn du dieses Programm ausführst, wirst du etwas wie dies sehen:
Vanille erneut hinzugefügt? false
Unsere Eiscreme-Sorten: [Vanille, Minz-Chip, Schokolade, Erdbeere]
Wir haben 4 einzigartige Sorten!
Entschuldigung, wir haben keine Rocky Road.
Aktualisierte Sorten nach dem Entfernen von Erdbeere: [Vanille, Minz-Chip, Schokolade]
Lassen Sie uns aufbrechen, was passiert ist:
- Wir haben eine HashSet namens
sorten
erstellt, um unsere Eiscreme-Sorten zu speichern. - Wir haben vier Sorten hinzugefügt: Vanille, Schokolade, Erdbeere und Minz-Chip.
- Wir haben versucht, Vanille erneut hinzuzufügen, aber
add()
hatfalse
zurückgegeben, weil HashSet keine Duplikate zulässt. - Wir haben alle unsere Sorten ausgegeben. Beachte, dass die Reihenfolge möglicherweise anders ist als die, in der wir sie hinzugefügt haben – HashSet pflegt keine Einfügereihenfolge.
- Wir haben überprüft, ob wir die Sorte Rocky Road hatten, indem wir
contains()
verwendet haben. Wir hatten sie nicht, daher wurde eine "Entschuldigung"-Nachricht ausgegeben. - Schließlich haben wir Erdbeere entfernt und die aktualisierte Menge von Sorten ausgegeben.
Und da hast du es! Du hast gerade dein erstes HashSet erstellt und einige seiner wichtigsten Methoden verwendet. Denke daran, HashSet ist großartig, wenn du einzigartige Elemente speichern musst und dich nicht um die Reihenfolge kümmerst. Es ist wie eine Tasche voller Murmeln, bei denen jede Murmel eine andere Farbe hat – du kannst leicht überprüfen, ob du eine bestimmte Farbe hast, aber du kannst nicht steuern, in welcher Reihenfolge sie herauskommen, wenn du die Tasche umdrehst.
Während du weiter auf deinem Java-Weg gehst, wirst du HashSet in vielen Szenarien unglaublich nützlich finden. Übe weiter und bald wirst du ein HashSet-Profi sein! Happy coding!
Credits: Image by storyset