Sobes.tech
Junior

Welche Implementierungen von Sammlungen gibt es in der Programmiersprache Java?

sobes.tech KI

Antwort von AI

  • Schnittstellen:

    • Collection: Basisschnittstelle für alle Sammlungen.
    • List: Geordnete Sammlung (mit Indizes).
    • Set: Sammlung ohne Duplikate.
    • SortedSet: Sammlung ohne Duplikate, deren Elemente sortiert sind.
    • Map: Assoziatives Array (Schlüssel-Wert).
    • SortedMap: Nach Schlüsseln sortiertes assoziatives Array.
    • Queue: Sammlung zum Speichern von Elementen vor ihrer Verarbeitung.
    • Deque: Doppelt verkettete Warteschlange.
  • Klassen (Hauptimplementierungen):

    • Für List:

      • ArrayList: Dynamisches Array. Schneller Zugriff nach Index, langsame Einfüge-/Löschoperationen in der Mitte.
      • LinkedList: Doppelt verkettete Liste. Langsamer Zugriff nach Index, schnelle Einfüge-/Löschoperationen in der Mitte.
      • Vector: Alt, synchronisiert, Äquivalent zu ArrayList.
      • Stack: Unterklasse von Vector, implementiert einen Stack (LIFO).
    • Für Set:

      • HashSet: Implementierung basierend auf Hashtabelle. Garantiert keine Reihenfolge.
      • LinkedHashSet: Basierend auf Hashtabelle und verketteter Liste. Beibehaltung der Einfügereihenfolge.
      • TreeSet: Basierend auf rotem-schwarzem Baum. Elemente sortiert in aufsteigender Reihenfolge.
    • Für Map:

      • HashMap: Basierend auf Hashtabelle. Garantiert keine Reihenfolge der Schlüssel-Wert-Paare.
      • Hashtable: Alt, synchronisiert, Äquivalent zu HashMap.
      • LinkedHashMap: Basierend auf Hashtabelle und verketteter Liste. Beibehaltung der Einfügereihenfolge.
      • TreeMap: Basierend auf rotem-schwarzem Baum. Schlüssel-Wert-Paare sortiert nach Schlüsseln.
    • Für Queue:

      • PriorityQueue: Prioritätswarteschlange. Elemente werden in natürlicher Reihenfolge oder nach Comparator extrahiert.
      • ArrayDeque: Implementierung einer doppelseitigen Warteschlange basierend auf Array.
  • Hilfsklassen:

    • Collections: Statische Methoden für die Arbeit mit Sammlungen (Sortieren, Suchen, Synchronisieren usw.).
// 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> numbers = new HashSet<>();
numbers.add(1);
numbers.add(2);
numbers.add(1); // Das Duplikat wird nicht hinzugefügt
System.out.println(numbers.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
// Beispiel für PriorityQueue
Queue<Integer> priorityQueue = new PriorityQueue<>();
priorityQueue.add(3);
priorityQueue.add(1);
priorityQueue.add(2);
System.out.println(priorityQueue.poll()); // 1 (niedrigste Priorität)