String.lines() для разбиения на строки
Использование String.lines() для разбиения текста на поток строк без издержек регулярных выражений.
Сравнение кода
✕ 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);
Заметили проблему в этом коде? Сообщите нам.
Почему современный подход лучше
Ленивый поток
Строки генерируются по запросу, а не все сразу, как в split().
Универсальные разделители строк
Автоматически обрабатывает \n, \r и \r\n без регулярных выражений.
Интеграция со Stream
Возвращает поток для прямого использования с filter, map, collect.
Старый подход
split("\\n")
Современный подход
lines()
Начиная с JDK
11
Сложность
Начинающий
Поддержка JDK
String.lines() для разбиения на строки
Доступно
Доступно с JDK 11 (сентябрь 2018).
Как это работает
String.lines() возвращает Stream<String> строк, разбитых по \n, \r или \r\n. Это ленивее и эффективнее, чем split(), избегает компиляции регулярных выражений и естественно интегрируется в Stream API для дальнейшей обработки.
Связанная документация
Доказательство