Java bietet verschiedene Sammlungen. Ein Array hat eine feste Größe. Eine List bildet eine Reihenfolge ab. Ein Set verhindert doppelte Werte. Eine Map ordnet Schlüsseln Werte zu. Mit Generics wie List<String> legt der Compiler fest, welcher Typ enthalten sein darf.
01Eine veränderliche Liste anlegen
ArrayList erlaubt add. List.of erzeugt dagegen eine nicht veränderbare Liste. Namen der Schnittstelle und der Implementierung dürfen verschieden sein: List beschreibt den Vertrag, ArrayList die konkrete Ablage.
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
public class Main {
public static void main(String[] args) {
List<String> names = new ArrayList<>(List.of("Ada", "Lin"));
names.add("Ada");
var unique = new HashSet<>(names);
Map<String, String> mapping = Map.of("recipient", "fullName");
System.out.println(names.size());
System.out.println(unique.size());
System.out.println(mapping.get("recipient"));
}
}
Starten / prüfen
java Main.java02Duplikate und Schlüssel verstehen
HashSet entfernt doppelte Namen, verspricht aber keine sortierte Reihenfolge. Map.of ordnet PDF-Feldnamen einer CSV-Spalte zu. get liefert null für einen unbekannten Schlüssel.
03Typen und Mutabilität unterscheiden
Eine final-Variable verhindert nur eine Neuzuweisung. Sie macht eine ArrayList nicht unveränderlich. List.copyOf erzeugt eine nicht veränderbare Kopie. Auch diese Kopie kopiert enthaltene Objekte nicht automatisch tief.
3 Namen, 2 eindeutige Namen und die Zuordnung fullName
Deine Übung
Erzeuge eine nicht veränderbare Kopie der Namen und versuche anschließend add.
Lösung mit Erklärung anzeigen
List<String> snapshot = List.copyOf(names) erzeugt die Kopie. snapshot.add("Sam") wirft UnsupportedOperationException. Die ursprüngliche ArrayList kann weiterhin verändert werden.
Projektbezug und Quellen
Das Beispiel ist zum Lernen vereinfacht. Die verlinkte Codeversion zeigt die Anwendung im Projekt und die dortigen Prüfungen.