Set

**This is an old revision of the document!**

Set

Ein Set eine Sammlung, die keine doppelten Elemente zulässt.

  • Set ist eine Schnittstelle (Interface) in der Java-Collection-API.
  • Sie definiert die grundlegenden Eigenschaften einer Menge (z. B. keine Duplikate, Sammlung von Objekten).
  • Sie ist abstrakt und kann nicht direkt instanziiert werden.
  • Sie wird von verschiedenen Klassen wie HashSet, LinkedHashSet und TreeSet implementiert.
  • Methoden von Set (z. B. add(), remove(), contains()) sind nur deklariert, nicht implementiert.

Wichtige Eigenschaften von Sets:

  1. Keine Duplikate: Ein Set speichert jedes Element nur einmal. Wenn versucht wird, ein doppeltes Element hinzuzufügen, wird es ignoriert.
  2. Keine feste Reihenfolge: Die Reihenfolge der Elemente ist nicht garantiert (außer bei speziellen Implementierungen wie LinkedHashSet oder TreeSet).
  3. Implementierungen: Die gängigsten Implementierungen von Set sind:
    • HashSet: Schnelle Zugriffe, keine bestimmte Reihenfolge.
    • LinkedHashSet: Behält die Einfügereihenfolge bei.
    • TreeSet: Sortiert die Elemente in natürlicher Reihenfolge oder nach einem benutzerdefinierten Comparator.

import java.util.HashSet;
import java.util.Set;
 
public class Main {
    public static void main(String[] args) {
        // Ein Set erstellen
        Set<String> fruits = new HashSet<>();
 
        // Elemente hinzufügen
        fruits.add("Apfel");
        fruits.add("Banane");
        fruits.add("Orange");
        fruits.add("Apfel"); // Duplikat, wird ignoriert
 
        // Set ausgeben
        System.out.println("Früchte im Set: " + fruits);
 
        // Prüfen, ob ein Element enthalten ist
        if (fruits.contains("Banane")) {
            System.out.println("Die Banane ist im Set.");
        }
 
        // Element entfernen
        fruits.remove("Orange");
        System.out.println("Nach dem Entfernen der Orange: " + fruits);
 
        // Iteration über das Set
        System.out.println("Alle Früchte:");
        for (String fruit : fruits) {
            System.out.println(fruit);
        }
    }
}
In diesem Code wird die Set-Schnittstelle verwendet, aber ihre konkrete Implementierung ist HashSet. Das gibt dir die Flexibilität, später die Implementierung zu ändern (z. B. auf TreeSet oder LinkedHashSet), ohne den Rest des Codes zu beeinflussen.


Methoden und Iteration:

  1. add(): Fügt Elemente zum Set hinzu. Wenn ein Element schon existiert, wird es nicht erneut hinzugefügt.
  2. contains(): Prüft, ob ein bestimmtes Element im Set enthalten ist.
  3. remove(): Entfernt ein Element aus dem Set.
  4. Iteration: Mit einer for-each-Schleife kann man alle Elemente im Set durchlaufen.