Strings 初級

正規表現のオーバーヘッドなしに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を自動的に処理します。

🔗

ストリーム統合

filter・map・collectと直接組み合わせられるStreamを返します。

旧来のアプローチ
split("\\n")
モダンなアプローチ
lines()
JDKバージョン
11
難易度
初級
行分割のString.lines()
利用可能

JDK 11(2018年9月)以降、利用可能

String.lines()は\n、\r、\r\nで分割した行のStream<String>を返します。split()より遅延評価で効率的であり、正規表現のコンパイルを回避し、Stream APIと自然に統合できます。

共有 𝕏 🦋 in