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!

Java - HashSet

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:

  1. Anfangskapazität: Die Anzahl der "Kübel" die HashSet verwendet, um Elemente zu speichern.
  2. 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:

  1. Wir haben eine HashSet namens sorten erstellt, um unsere Eiscreme-Sorten zu speichern.
  2. Wir haben vier Sorten hinzugefügt: Vanille, Schokolade, Erdbeere und Minz-Chip.
  3. Wir haben versucht, Vanille erneut hinzuzufügen, aber add() hat false zurückgegeben, weil HashSet keine Duplikate zulässt.
  4. 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.
  5. 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.
  6. 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