Java Grundlagen Schulung – Kursbezug
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?
- Strings:
equals(),contains(),startsWith(),split(),trim(). - Performance: viele Konkatenationen → StringBuilder.
- Collections: List (Reihenfolge), Set (eindeutig), Map (Schlüssel→Wert).
- Iteration: enhanced for, index-basiert,
forEach(kurz & lesbar).
Lehr-Lernziele
- LZ1: Strings sicher vergleichen/suchen/zerlegen (ohne
==-Falle). - LZ2: Textausgaben effizient bauen (StringBuilder statt „+“ in Schleifen).
- LZ3: die passende Collection wählen:
Listvs.Setvs.Map. - LZ4: Collections durchlaufen und einfache Auswertungen bauen (z.B. Zählen, Filtern, Zuordnen).
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.
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
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.
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)
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)
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)
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.
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).
- Sie haben eine Liste von Kurszeilen als String (z.B.
\"Java Grundlagen|Online|3|1490|java,grundlagen\"). - Splitten Sie je Zeile in Felder (Name, Format, Dauer, Preis, Tags).
- Speichern Sie:
- alle Kursnamen in einer
List(für Ausgabe in Reihenfolge) - alle Tags in einem
Set(unique) - Tag-Häufigkeiten in einer
Map
- alle Kursnamen in einer
- Bauen Sie am Ende eine schöne Ausgabe (StringBuilder).
Lösung anzeigen
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
StringBuilderverwenden. - Map zählen:
getOrDefaultspart if/else.
Kurz-Takeaways
- LZ1: Strings mit
trim/contains/split/equalszuverlässig verarbeiten. - LZ2: Viele Textteile →
StringBuilder. - LZ3:
List= Reihenfolge,Set= eindeutig,Map= Zuordnung/Zählen. - LZ4: Iteration + kleine Auswertungen (Zählen, Sammeln) sind Standard in echten Programmen.