Collections
Das Collections Framework bietet für jede Aufgabe die passende Struktur: List, Set und Map sind die großen drei.
Ansicht
01
Verstehen
Lies die Kernidee und das Beispiel.
02
Prüfen
Beantworte die Aktiv-Checks.
03
Anwenden
Setze die Transferaufgabe um.
Mini-Erfolg
Du hast mit einer Map gezählt, wie oft ein Wort vorkommt.
Warum das wichtig ist: Die Wahl der Datenstruktur entscheidet oft, ob Code einfach oder umständlich wird.
Vorher hilfreich
Lerninhalt
Verstehen & anwenden
Die großen drei
List hält eine geordnete Sammlung mit Duplikaten (ArrayList, LinkedList).
Set hält jedes Element nur einmal (HashSet, TreeSet).
Map speichert Schlüssel-Wert-Paare (HashMap, TreeMap).
HashMap
put speichert unter einem Schlüssel, get liest, containsKey prüft.
getOrDefault liefert einen Ersatzwert, wenn der Schlüssel fehlt.
Map<String, Integer> punkte = new HashMap<>();
punkte.put("html", 120);
punkte.put("java", 85);
punkte.get("java"); // 85
punkte.getOrDefault("css", 0); // 0Set gegen Duplikate
Ein HashSet ignoriert doppelte Einträge automatisch.
Perfekt für "schon gesehen"-Logik, etwa bereits gelernte Tags.
Set<String> gelernt = new HashSet<>();
gelernt.add("int");
gelernt.add("int"); // wird ignoriert
gelernt.size(); // 1Vertiefung
Die richtige Struktur wählen
List ist geordnet und erlaubt Duplikate. Set erlaubt jedes Element nur einmal. Map speichert Schlüssel-Wert-Paare und ist der Standard für Nachschlagen.
HashMap ist schnell, aber nicht sortiert. TreeMap sortiert nach Schlüsseln. Die Wahl hängt davon ab, ob du Reihenfolge, Duplikatfreiheit oder schnellen Zugriff brauchst.
Map<String, Integer> zaehler = new HashMap<>();
for (String wort : List.of("java", "ist", "super", "java")) {
zaehler.merge(wort, 1, Integer::sum);
}
System.out.println(zaehler); // {ist=1, java=2, super=1}Merksatz: List für Reihenfolge, Set für Eindeutigkeit, Map für Nachschlagen. merge ist die kompakte Art, Werte zu zählen.
Übungsaufgabe
Wortzähler
Zähle, wie oft jedes Wort in einem Satz vorkommt. Gib die Wörter mit ihrer Anzahl aus.
Das soll dein Programm können
- Einen Satz in Wörter zerlegen
- HashMap<String, Integer> verwenden
- Wörter zählen (Groß-/Kleinschreibung egal)
- Ausgabe der Map
Schreibe den Code hier oder in deiner IDE und vergleiche ihn dann mit der Lösung.
Dein Code wird automatisch auf diesem Gerät gespeichert.
Hinweis anzeigen
satz.toLowerCase().split("\\s+") zerlegt den Satz. Danach kannst du mit merge zählen.
Lösung anzeigen
import java.util.*;
public class Wortzaehler {
public static void main(String[] args) {
String satz = "Java ist super und Java macht Spaß";
Map<String, Integer> zaehler = new HashMap<>();
for (String wort : satz.toLowerCase().split("\\s+")) {
zaehler.merge(wort, 1, Integer::sum);
}
for (Map.Entry<String, Integer> eintrag : zaehler.entrySet()) {
System.out.println(eintrag.getKey() + ": " + eintrag.getValue());
}
}
}Warum funktioniert das?
merge erhöht den Zähler, wenn der Schlüssel existiert, und legt ihn sonst mit 1 an. Die Map speichert hier bewusst die Anzahl als Integer.
Aktiv-Check
Teste dein Verständnis
Erkennen: Welcher Abschnitt passt?
Welcher Abschnitt passt zu diesen Begriffen?
Spaßprojekt
Wortzähler
Zähle die Wörter in einem Satz mit einer HashMap. Gib anschließend jedes Wort mit seiner Anzahl aus.
Selbstcheck
Kann ich das schon?
Hake ab, was du wirklich erklären oder selbst bauen könntest.
Fortschritt
Bereit zum Abschließen?
Markiere die Lektion als abgeschlossen, um XP und Streak zu erhalten.