This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. # 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. ```java 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.