SemaTrain Logo Ein Fachportal des SemaTrain Trainingsinstituts

Strings & Collections: Text und Datenstrukturen

Sie arbeiten mit Text und Datenlisten: Strings sauber verarbeiten, Collections sinnvoll wählen (List, Set, Map) – kursnah im SemaTrain-Kontext.

Hinweis: Beispiele sind didaktisch und nutzen Beispieldaten.

Java Grundlagen Schulung – Kursbezug

Dieses Kapitel ist Teil des Lernpfads zur Java Grundlagen Schulung. Termine & Buchung laufen über SemaTrain.de.

Hinweis: Beispiele sind didaktisch und nutzen Beispieldaten.

Ziel dieses Kapitels: Sie können Texte zuverlässig verarbeiten (String, StringBuilder) und typische Daten sammlen/zuordnen (List, Set, Map) – passend zum Problem.

Worum geht’s?

Lehr-Lernziele

Nach diesem Kapitel können Sie …

Wie Ziele erreicht werden: Beispiele trainieren String-Methoden (LZ1), StringBuilder (LZ2) sowie List/Set/Map + Iteration (LZ3–LZ4). Das Mini-Projekt kombiniert alles in einer kleinen „Kursübersicht“.

Strings in der Praxis

Im Kurskontext tauchen Strings überall auf: Kursname, Format, Ort, Tags, Notizen, Teilnehmernamen.

Beispiel: trim/contains/startsWith/equals (null-safe) (Java)
public class StringBasics {
  public static void main(String[] args) {
    String kurs = "  Java Grundlagen Schulung  ";
    String format = "Online";

    // Aufräumen
    String clean = kurs.trim();

    // Suchen/prüfen
    boolean hatJava = clean.contains("Java");
    boolean beginntMitJava = clean.startsWith("Java");

    // Vergleichen (Inhalt)
    boolean istOnline = "Online".equals(format); // null-safe

    System.out.println("clean: " + clean);
    System.out.println("hatJava: " + hatJava);
    System.out.println("beginntMitJava: " + beginntMitJava);
    System.out.println("istOnline: " + istOnline);
  }
}

split(): aus Text wird Struktur

Typisch: CSV-/Tag-Listen oder ein „Kurs|Ort|Format“-String aus einer Datei.

Beispiel: Tags per split() zerlegen (Java)
import java.util.Arrays;

public class SplitBeispiel {
  public static void main(String[] args) {
    String tags = "java,grundlagen,online";

    String[] teile = tags.split(",");

    System.out.println(Arrays.toString(teile));
    System.out.println("Anzahl Tags: " + teile.length);
  }
}

StringBuilder: Text effizient zusammenbauen

Regel: „+“ ist ok für wenige Teile. In Schleifen → StringBuilder.

Beispiel: StringBuilder in einer Schleife (Java)
public class StringBuilderBeispiel {
  public static void main(String[] args) {

    int dauerTage = 3;
    StringBuilder sb = new StringBuilder();

    sb.append("Tagesplan: ");

    for (int tag = 1; tag <= dauerTage; tag++) {
      sb.append("Tag ").append(tag).append("; ");
    }

    System.out.println(sb.toString());
  }
}

Collections: List vs Set vs Map

List (Reihenfolge, Duplikate ok)

List: Reihenfolge behalten (Java)
import java.util.*;

public class ListBeispiel {
  public static void main(String[] args) {
    List<String> teilnehmer = new ArrayList<>();
    teilnehmer.add("Max");
    teilnehmer.add("Sara");
    teilnehmer.add("Max"); // Duplikat ok

    System.out.println("TN: " + teilnehmer);
    System.out.println("Erster: " + teilnehmer.get(0));
  }
}

Set (eindeutig)

Set: Duplikate entfernen (Java)
import java.util.*;

public class SetBeispiel {
  public static void main(String[] args) {
    Set<String> uniqueTags = new HashSet<>();
    uniqueTags.add("java");
    uniqueTags.add("grundlagen");
    uniqueTags.add("java"); // wird ignoriert

    System.out.println("Tags: " + uniqueTags);
  }
}

Map (Schlüssel → Wert)

Typisch: Kursname → Preis, Kurs-ID → Objekt, Tag → Anzahl.

Map: Zuordnung Schlüssel→Wert (Java)
import java.util.*;

public class MapBeispiel {
  public static void main(String[] args) {
    Map<String, Integer> teilnehmerProKurs = new HashMap<>();

    teilnehmerProKurs.put("Java Grundlagen", 18);
    teilnehmerProKurs.put("Java Grundlagen", 19); // überschreibt
    teilnehmerProKurs.put("OOP Basics", 12);

    System.out.println(teilnehmerProKurs);
    System.out.println("Java Grundlagen: " + teilnehmerProKurs.get("Java Grundlagen"));
  }
}

Iteration: Durchlaufen und zählen

Ein Klassiker: Tags zählen oder Teilnehmerliste ausgeben.

Beispiel: Häufigkeiten zählen (Map + getOrDefault) (Java)
import java.util.*;

public class ZaehlenMitMap {
  public static void main(String[] args) {
    List<String> tags = Arrays.asList("java", "grundlagen", "java", "online", "java");

    Map<String, Integer> counts = new HashMap<>();

    for (String t : tags) {
      counts.put(t, counts.getOrDefault(t, 0) + 1);
    }

    System.out.println(counts); // z.B. {java=3, grundlagen=1, online=1}
  }
}

Praxisaufgabe (Mini)

Sie bauen eine kleine Kursübersicht aus Text + Collections.

Beitrag zu den Lehr-Lernzielen: LZ1 (String-Handling), LZ2 (StringBuilder), LZ3 (Collection-Wahl), LZ4 (Iteration/Auswertung).

  1. Sie haben eine Liste von Kurszeilen als String (z.B. \"Java Grundlagen|Online|3|1490|java,grundlagen\").
  2. Splitten Sie je Zeile in Felder (Name, Format, Dauer, Preis, Tags).
  3. Speichern Sie:
    • alle Kursnamen in einer List (für Ausgabe in Reihenfolge)
    • alle Tags in einem Set (unique)
    • Tag-Häufigkeiten in einer Map
  4. Bauen Sie am Ende eine schöne Ausgabe (StringBuilder).
Lösung anzeigen
Lösung: Kursübersicht (String + List/Set/Map + StringBuilder) (Java)
import java.util.*;

public class KursUebersichtProjekt {

  public static void main(String[] args) {

    // Beispiel-Daten (didaktisch)
    List<String> zeilen = Arrays.asList(
      "Java Grundlagen|Online|3|1490|java,grundlagen,online",
      "OOP Basics|Praesenz|2|1190|java,oop",
      "Fehlerbehandlung|Online|1|590|java,debug,online"
    );

    List<String> kursNamen = new ArrayList<>();
    Set<String> uniqueTags = new HashSet<>();
    Map<String, Integer> tagCounts = new HashMap<>();

    for (String z : zeilen) {
      String[] f = z.split("\\|");
      String name = f[0];
      String format = f[1];
      int dauer = Integer.parseInt(f[2]);
      double preis = Double.parseDouble(f[3]);

      kursNamen.add(name);

      // Tags
      String[] tags = f[4].split(",");
      for (String t : tags) {
        String tag = t.trim();
        uniqueTags.add(tag);
        tagCounts.put(tag, tagCounts.getOrDefault(tag, 0) + 1);
      }
    }

    // Ausgabe bauen
    StringBuilder sb = new StringBuilder();
    sb.append("Kurse (Reihenfolge):\n");
    for (String k : kursNamen) {
      sb.append("- ").append(k).append("\n");
    }

    sb.append("\nUnique Tags: ").append(uniqueTags).append("\n");
    sb.append("Tag-Haeufigkeiten: ").append(tagCounts).append("\n");

    System.out.println(sb.toString());
  }
}
Optional: typische Stolperfallen
  • Split mit |: In Java-RegEx muss das Pipe escaped werden: split(\"\\\\|\").
  • String-Vergleich: equals() statt ==.
  • „+“ in Schleifen: lieber StringBuilder verwenden.
  • Map zählen: getOrDefault spart if/else.

Kurz-Takeaways

Primärreferenzen

Geprüfte Java-Referenzen

Die fachlichen Aussagen dieser Lektion werden gegen zuständige Primärreferenzen geprüft. Erklärungen, Beispiele, Aufgaben, Quizfragen und Lösungen sind eigenständige SemaTrain-Inhalte.

Lektionsprofil: Strings, StringBuilder und Collections

Kursbasis: JDK 25 LTS

Feature-Release zum Prüfdatum: Java SE / JDK 27

Quellenprüfung: 2026-09-17

Java Platform, Standard Edition & JDK Specifications Version 25

Quellentyp: Primärspezifikation

Verantwortliche Referenzstelle: Oracle – Java SE

Versionsbezug: Java SE 25 / JDK 25

Geltungsbereich: Java-Sprache, JVM, Java-SE-Plattform und JDK-Spezifikationen.

Offizielle Primärreferenz

JDK 25 Documentation

Quellentyp: Herstellerdokumentation

Verantwortliche Referenzstelle: Oracle

Versionsbezug: JDK 25

Geltungsbereich: Offizielle JDK-API, Werkzeuge und Plattformfunktionen.

Offizielle Primärreferenz

Oracle Java SE Support Roadmap

Quellentyp: Hersteller-Roadmap

Verantwortliche Referenzstelle: Oracle

Versionsbezug: Prüfstand 17.09.2026

Geltungsbereich: Einordnung von LTS- und Feature-Releases.

Offizielle Primärreferenz

Java Language and Virtual Machine Specifications

Quellentyp: Primärspezifikation

Verantwortliche Referenzstelle: Oracle – Java SE

Versionsbezug: Java SE 27 / 26 / 25

Geltungsbereich: Offizieller Versionsindex der Java-Sprach- und JVM-Spezifikationen.

Offizielle Primärreferenz

String API

Quellentyp: API-Primärreferenz

Verantwortliche Referenzstelle: Oracle – Java SE

Versionsbezug: JDK 25

Geltungsbereich: String-Operationen, Vergleich, Suche und Zerlegung.

Offizielle Primärreferenz

StringBuilder API

Quellentyp: API-Primärreferenz

Verantwortliche Referenzstelle: Oracle – Java SE

Versionsbezug: JDK 25

Geltungsbereich: Veränderbare Zeichenfolgen und wiederholtes Anhängen von Text.

Offizielle Primärreferenz

java.util Package

Quellentyp: API-Primärreferenz

Verantwortliche Referenzstelle: Oracle – Java SE

Versionsbezug: JDK 25

Geltungsbereich: Collections Framework, List, Set, Map und zugehörige Hilfsklassen.

Offizielle Primärreferenz

Java Quellen und Methodik

Quiz: Strings & Collections

1. Welche Aussage stimmt? (LZ3)

2. Wie vergleichen Sie zwei Strings inhaltlich korrekt? (LZ1)

3. Warum nimmt man StringBuilder häufig in Schleifen? (LZ2)

4. Wie zählen Sie in einer Map am einfachsten hoch? (LZ4)

Praxisaufgabe

Mini-Projekt: Kursübersicht aus Zeilen (Split + List/Set/Map)

Sie lesen Kursdaten aus Textzeilen, zerlegen sie und erstellen eine Auswertung.

Beitrag zu den Lehr-Lernzielen: LZ1 (split/equals), LZ2 (StringBuilder), LZ3 (List/Set/Map), LZ4 (Iteration/Zählen).

Aufgabe

Lösung anzeigen
Lösung: Mini-Projekt Kursübersicht (Java)
import java.util.*;

public class KursUebersichtMiniProjekt {
  public static void main(String[] args) {

    List<String> zeilen = Arrays.asList(
      "Java Grundlagen|Online|3|1490|java,grundlagen,online",
      "Vererbung|Praesenz|1|590|java,oop",
      "Exceptions|Online|1|590|java,debug,online"
    );

    List<String> kurs = new ArrayList<>();
    Set<String> tagsUnique = new HashSet<>();
    Map<String, Integer> tagsCount = new HashMap<>();

    for (String z : zeilen) {
      String[] f = z.split("\\|");
      kurs.add(f[0]);

      String[] tags = f[4].split(",");
      for (String t : tags) {
        String tag = t.trim();
        tagsUnique.add(tag);
        tagsCount.put(tag, tagsCount.getOrDefault(tag, 0) + 1);
      }
    }

    StringBuilder sb = new StringBuilder();
    sb.append("Kurse:\n");
    for (String k : kurs) sb.append("- ").append(k).append("\n");
    sb.append("\nUnique Tags: ").append(tagsUnique).append("\n");
    sb.append("Tag-Counts: ").append(tagsCount);

    System.out.println(sb.toString());
  }
}

SemaTrain Trainingsinstitut

Java praktisch vertiefen

Diese Wissenslektion ist Bestandteil des SemaTrain-Java-Lernpfads. Das begleitete Training ergänzt Wissen durch Programmierpraxis, Feedback und Transfer.

Zum Java Trainingscenter Quellen und Methodik