List ·
Set ·
Map ·
Queue ·
Collections ·
Legacy
Das Java Collections Framework bietet leistungsstarke Datenstrukturen für die Speicherung und Verarbeitung von Objekten – von geordneten Listen über eindeutige Sets bis zu Schlüssel-Wert-Maps.
List ist eine geordnete Sammlung, die Duplikate erlaubt. Der Zugriff erfolgt über den Index. ArrayList ist die am häufigsten verwendete Implementierung.
| Methode | Beschreibung |
|---|---|
| add(E e) | Fügt Element am Ende hinzu |
| add(int index, E e) | Fügt Element an Position ein |
| get(int index) | Gibt Element an Position zurück |
| set(int index, E e) | Ersetzt Element an Position |
| remove(int index) | Entfernt Element an Position |
| remove(Object o) | Entfernt erstes Vorkommen |
| size() | Gibt Anzahl der Elemente zurück |
| contains(Object o) | Prüft, ob Element enthalten ist |
| indexOf(Object o) | Gibt Position des Elements zurück |
| toArray() | Konvertiert zu Array |
ArrayList ist für schnellen Zugriff per Index optimiert, LinkedList für häufiges Einfügen/Löschen am Anfang der Liste.
Set ist eine Sammlung, die keine Duplikate enthält. Die Reihenfolge ist nicht garantiert (außer bei TreeSet und LinkedHashSet).
| Klasse | Beschreibung |
|---|---|
| HashSet | Schnellste Implementierung, keine Reihenfolge (O(1)) |
| TreeSet | Sortierte Reihenfolge (O(log n)), implementiert NavigableSet |
| LinkedHashSet | Einfügereihenfolge beibehalten, O(1) |
| EnumSet | Speziell für Enum-Typen, sehr effizient |
HashSet ist die beste Wahl für die meisten Anwendungsfälle. TreeSet ist ideal, wenn Sie sortierte Daten benötigen.
Map speichert Schlüssel-Wert-Paare. Jeder Schlüssel ist eindeutig und kann zum Abrufen des zugehörigen Werts verwendet werden.
| Methode | Beschreibung |
|---|---|
| put(K key, V value) | Fügt ein Schlüssel-Wert-Paar hinzu |
| get(Object key) | Gibt den Wert für den Schlüssel zurück |
| getOrDefault(key, defaultValue) | Gibt Wert oder Default zurück (Java 8+) |
| remove(Object key) | Entfernt das Paar mit dem Schlüssel |
| containsKey(Object key) | Prüft, ob Schlüssel vorhanden ist |
| containsValue(Object value) | Prüft, ob Wert vorhanden ist |
| keySet() | Gibt alle Schlüssel als Set zurück |
| values() | Gibt alle Werte als Collection zurück |
| entrySet() | Gibt alle Paare als Set zurück |
| putIfAbsent(key, value) | Fügt hinzu, wenn Schlüssel nicht vorhanden (Java 8+) |
| computeIfAbsent(key, mapping) | Berechnet Wert, falls Schlüssel fehlt (Java 8+) |
computeIfAbsent() oder getOrDefault() für elegante Null-Check-Vermeidung. HashMap ist die schnellste Map-Implementierung.
Queue ist eine Warteschlange nach dem FIFO-Prinzip (First-In-First-Out) oder mit Priorität. PriorityQueue sortiert nach natürlicher Ordnung oder Comparator.
| Methode | Beschreibung | Exception bei Fehler |
|---|---|---|
| add(e) | Fügt Element hinzu | IllegalStateException |
| offer(e) | Fügt Element hinzu (bevorzugt) | false |
| remove() | Entfernt und gibt Kopf zurück | NoSuchElementException |
| poll() | Entfernt und gibt Kopf zurück (bevorzugt) | null |
| element() | Gibt Kopf zurück (ohne Entfernen) | NoSuchElementException |
| peek() | Gibt Kopf zurück (ohne Entfernen, bevorzugt) | null |
| size() | Anzahl der Elemente | - |
offer() und poll() statt add() und remove() – sie werfen keine Exceptions und sind daher robuster.
Collections ist eine Utility-Klasse mit statischen Methoden für die Arbeit mit Collections – Sortieren, Suchen, Mischen und mehr.
| Methode | Beschreibung |
|---|---|
| sort(List list) | Sortiert Liste nach natürlicher Ordnung |
| sort(List list, Comparator c) | Sortiert Liste mit Comparator |
| reverse(List list) | Kehrt die Reihenfolge der Liste um |
| shuffle(List list) | Mischt die Liste zufällig |
| binarySearch(list, key) | Binäre Suche (Liste muss sortiert sein) |
| min(Collection coll) | Kleinstes Element (nach natürlicher Ordnung) |
| max(Collection coll) | Größtes Element (nach natürlicher Ordnung) |
| frequency(Collection c, Object o) | Zählt Vorkommen eines Objekts |
| unmodifiableList(List list) | Gibt unveränderbare Liste zurück |
| synchronizedList(List list) | Gibt threadsichere Liste zurück |
Collections.binarySearch() setzt eine sortierte Liste voraus, sonst ist das Ergebnis undefiniert. Verwenden Sie es für effiziente Suchen in großen Listen.
Legacy-Klassen sind veraltete Collections aus den frühen Java-Versionen. Sie sind synchronisiert (thread-safe) aber langsam. Verwenden Sie stattdessen die modernen Äquivalente.
| Legacy | Modern | Bemerkung |
|---|---|---|
| Vector | ArrayList | Vector ist synchronisiert (langsamer) |
| Stack | Deque (ArrayDeque) | Stack erbt von Vector (veraltet) |
| Hashtable | HashMap | Hashtable ist synchronisiert, erlaubt kein null |
| Enumeration | Iterator | Enumeration ist veraltet |
| Dictionary | Map | Dictionary ist veraltet |
Vector, Stack, Hashtable und Enumeration gelten als veraltet. Verwenden Sie stattdessen ArrayList, ArrayDeque, HashMap und Iterator.
List
Set
Map
Queue
Collections
Legacy
List<String> list = new ArrayList<>(); ·
Set<Integer> set = new HashSet<>(); ·
Map<K,V> map = new HashMap<>();