Sobes.tech
Junior

Erzählen Sie von der Hierarchie der Sammlungen in Java.

sobes.tech KI

Antwort von AI

Die Hierarchie der Sammlungen in Java basiert auf zwei Grundschnittstellen: Collection und Map. Sie ist im Paket java.util definiert.

  • Collection<E>: Grundschnittstelle für die meisten Sammlungen. Repräsentiert eine Gruppe von Elementen. Garantiert keine Reihenfolge oder Einzigartigkeit der Elemente.
    • List<E>: Geordnete Sammlung (Sequenz). Elemente haben einen definierten Index. Doppelte Elemente sind erlaubt.
      • ArrayList<E>: Array-basierte Implementierung. Schneller zufälliger Zugriff, langsame Einfügungen/Entfernungen in der Mitte.
      • LinkedList<E>: Verkettete Listen-Implementierung. Langsamer zufälliger Zugriff, schnelle Einfügungen/Entfernungen am Anfang/Ende.
      • Vector<E>: Veraltete synchronisierte Klasse. Ähnlich wie ArrayList, aber thread-sicher (weniger performant).
      • Stack<E>: Veraltete Klasse, die Vector erweitert und das Stack-Verhalten (LIFO) implementiert.
    • Set<E>: Sammlung, die nur eindeutige Elemente enthält.
      • HashSet<E>: Hash-Tabellen-basierte Implementierung. Nicht sortiert. Schnelle Operationen add, remove, contains.
      • LinkedHashSet<E>: Bewahrt die Einfügereihenfolge.
      • SortedSet<E>: Sortierte Menge in aufsteigender Reihenfolge.
        • TreeSet<E>: Implementierung basierend auf einem Rot-Schwarz-Baum. Garantiert sortierte Reihenfolge.
    • Queue<E>: Sammlung zum Zwischenspeichern von Elementen vor der Verarbeitung, oft in FIFO-Reihenfolge (First-In, First-Out).
      • PriorityQueue<E>: Prioritätswarteschlange. Elemente werden entsprechend ihrer Priorität extrahiert.
      • Deque<E>: (Doppelt endende Warteschlange) Bidirektionale Queue. Unterstützt Einfügungen und Entnahmen an beiden Enden.
        • ArrayDeque<E>: Array-basierte Implementierung von Deque. Schneller als LinkedList für Stack- oder Queue-Verwendung.
  • Map<K, V>: Objekt, das Schlüssel auf Werte abbildet. Schlüssel sind eindeutig, Werte können wiederholt werden.
    • HashMap<K, V>: Hash-Tabellen-basierte Implementierung. Nicht sortiert. Schnelle Operationen put, get, remove.
    • LinkedHashMap<K, V>: Bewahrt die Einfügereihenfolge oder Zugriffshistorie.
    • SortedMap<K, V>: Nach Schlüsseln sortierte Karte.
      • TreeMap<K, V>: Implementierung basierend auf einem Rot-Schwarz-Baum. Garantiert sortierte Reihenfolge nach Schlüsseln.
    • Hashtable<K, V>: Veraltete synchronisierte Klasse. Ähnlich wie HashMap, aber thread-sicher (weniger performant).

Hauptschnittstellen:

Schnittstelle Beschreibung Reihenfolge Einzigartigkeit Doppelte Werte
Collection Gruppe von Elementen +/- +/- Ja
List Geordnete Sammlung Ja Nein Ja
Set Sammlung eindeutiger Elemente +/- Ja Nein
Queue Sammlung für Verarbeitung (FIFO) Ja Nein Ja
Deque Doppelt endende Warteschlange Ja Nein Ja
Map Schlüssel-Wert-Karte +/- Nach Schlüssel Ja
SortedSet Sortierte Menge Ja Ja Nein
SortedMap Nach Schlüsseln sortierte Karte Ja Nach Schlüssel Ja

Beispiel für die Verwendung:

// Beispiel für ArrayList
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
System.out.println(names.get(0)); // Alice

// Beispiel für HashSet
Set<Integer> uniqueNumbers = new HashSet<>();
uniqueNumbers.add(1);
uniqueNumbers.add(2);
uniqueNumbers.add(1); // Doppelt wird ignoriert
System.out.println(uniqueNumbers.size()); // 2

// Beispiel für HashMap
Map<String, Integer> ages = new HashMap<>();
ages.put("Alice", 30);
ages.put("Bob", 25);
System.out.println(ages.get("Alice")); // 30