String.lines() zum Aufteilen von Zeilen
String.lines() verwenden, um Text ohne Regex-Overhead in einen Stream von Zeilen aufzuteilen.
Code-Vergleich
✕ Java 8
String text = "one\ntwo\nthree";
String[] lines = text.split("\n");
for (String line : lines) {
System.out.println(line);
}
✓ Java 11+
String text = "one\ntwo\nthree"; text.lines().forEach(IO::println);
Problem mit diesem Code entdeckt? Sag uns Bescheid.
Warum der moderne Weg gewinnt
Lazy-Streaming
Zeilen werden bei Bedarf erzeugt, nicht alle auf einmal wie bei split().
Universelle Zeilenendezeichen
Behandelt \n, \r und \r\n automatisch ohne Regex.
Stream-Integration
Gibt einen Stream zur direkten Verwendung mit filter, map, collect zurück.
Alter Ansatz
split("\\n")
Moderner Ansatz
lines()
Seit JDK
11
Schwierigkeitsgrad
Einsteiger
JDK-Unterstützung
String.lines() zum Aufteilen von Zeilen
Verfügbar
Verfügbar seit JDK 11 (September 2018).
Wie es funktioniert
String.lines() gibt einen Stream<String> von Zeilen zurück, aufgeteilt nach \n, \r oder \r\n. Es ist träger und effizienter als split(), vermeidet Regex-Kompilierung und lässt sich natürlich in die Stream-API für weitere Verarbeitung integrieren.
Zugehörige Dokumentation