Java 11 String.lines() - Get Stream of Lines


Quick Guide to Java 11 String API new lines() method to convert String to Stream of Strings. Syntax: public Stream lines().

1. Java 11 String Stream<String> lines() Overview

In this tutorial, We'll learn how to convert String to Stream. lines() method returns Stream of Strings. We'll go through String lines() Method Examples.

Simple words, This method break down the string into lines if input string has lime terminators.

Supported line terminators are '\n', '\r' and '\r\n'.

"\n":  a line feed character
"\r":  a carriage return character
"\r\n": a carriage return followed immediately by a line feed

Java 11 String API lines() Method Example

Read article on Java 11 String additions

1.1 Syntax

public Stream lines()

This is a public method and can be accessed on string instance directly.

1.2 Since

Java 11

1.3 Returns

This method returns Stream of lines extracted from this string.

1.4 Parameters

Does not accept any parameters.

2. String.lines() Example - To get stream of lines

We will take a look at the sample programs using lines() method.

2.1 String.lines() example without line terminator(s)

Taking string value as "welcome to Java-w3schools blog" and this is not having any line terminator in it. Now, We should expect that returned stream should be having only one line.

String value = "welcome to Java-w3schools blog";
Stream stream =  value.lines();
stream.forEach(line -> System.out.println(line));


Ran this program and produced below output.

welcome to Java-w3schools blog

Only one line is printed as expected because input has no line terminators.

2.2 Example Program with '\n' using lines() Method

Let us take look at the input in the below example and it has now '\n' in it. Next, lines() method should extract each line and put into stream.

String withLineTerminators = "Very gald \nto meet you \nMr. Jhon Cena";
Stream lineTeminatorStream =  withLineTerminators.lines();
lineTeminatorStream.forEach(line -> System.out.println(line));


See the below output and converted into lines.

Very gald 
to meet you 
Mr. Jhon Cena

2.3 Example Program with '\r' using lines() Method

Input is same as above but just replaced '\n' with carriage terminator '\r'

String carrierLineTerminators = "Very gald \nto meet you \nMr. Jhon Cena";
Stream carrierTeminatorStream =  carrierLineTerminators.lines();

Output is same as above.

Very gald 
to meet you 
Mr. Jhon Cena

2.3  Example '\r'\n' using lines() Method

String bothLineTerminators = "Very gald \r\nto meet you \r\nMr. Jhon Cena";
Stream bothTeminatorStream =  bothLineTerminators.lines();

Output will be same above.

3. lines() Internal Code        

lines() method internally calls overloaded lines(int maxLeading, int maxTrailing) method passing maxLeading as '0' and maxTrailing as '0'.

Passes the string to LinesSpliterator.spliterator(value). It internally invokes skipBlankForward() and skipBlankBackward() methods to find out the line terminator index. Based on the index, it will break down into new line. Each new line added to Stream. Finally returns Stream<String>.

public Stream lines() {
    return lines(0, 0);

private Stream lines(int maxLeading, int maxTrailing) {
    return isLatin1() ? StringLatin1.lines(value, maxLeading, maxTrailing)
                      : StringUTF16.lines(value, maxLeading, maxTrailing);

private static int skipBlankForward(byte[] value, int start, int length) {
   int index = start;
   while (index < length) {
       char ch = getChar(value, index++);
       if (ch == '\n') {
           return index;
       if (ch == '\r') {
           if (index < length && getChar(value, index) == '\n') {
               return index + 1;
           return index;
       if (ch != ' ' && ch != '\t' && !Character.isWhitespace(ch)) {
           return start;
   return length;

4. Conclusion

In this article, We've seen the new method introduced in Java 11 in String class. Learn how to covert String to Stream of strings.

Example program on each line terminator '\r', '\n' and '\r\n'.

Discussion on lines() method internal code implementation.

Note: This method provides better performance than string split('\n') method in breaking down multi-line input.

Example code snippets shown in this article is available on GitHub.



About Us

Author: Venkatesh - I love to learn and share the technical stuff.

accumulo,1,ActiveMQ,2,Adsense,1,API,37,ArrayList,18,Arrays,24,Bean Creation,3,Bean Scopes,1,BiConsumer,1,Blogger Tips,1,Books,1,C Programming,1,Collection,8,Collections,37,Collector,1,Command Line,1,Comparator,1,Compile Errors,1,Configurations,7,Constants,1,Control Statements,8,Conversions,6,Core Java,149,Corona India,1,Create,2,CSS,1,Date,3,Date Time API,38,Dictionary,1,Difference,2,Download,1,Eclipse,3,Efficiently,1,Error,1,Errors,1,Exceptions,8,Fast,1,Files,17,Float,1,Font,1,Form,1,Freshers,1,Function,3,Functional Interface,2,Garbage Collector,1,Generics,4,Git,9,Grant,1,Grep,1,HashMap,2,HomeBrew,2,HTML,2,HttpClient,2,Immutable,1,Installation,1,Interview Questions,6,Iterate,2,Jackson API,3,Java,32,Java 10,1,Java 11,6,Java 12,5,Java 13,2,Java 14,2,Java 8,128,Java 8 Difference,2,Java 8 Stream Conversions,4,java 8 Stream Examples,12,Java 9,1,Java Conversions,14,Java Design Patterns,1,Java Files,1,Java Program,3,Java Programs,114,Java Spark,1,java.lang,4,java.util. function,1,JavaScript,1,jQuery,1,Kotlin,11,Kotlin Conversions,6,Kotlin Programs,10,Lambda,2,lang,29,Leap Year,1,live updates,1,LocalDate,1,Logging,1,Mac OS,3,Math,1,Matrix,6,Maven,1,Method References,1,Mockito,1,MongoDB,3,New Features,1,Operations,1,Optional,6,Oracle,5,Oracle 18C,1,Partition,1,Patterns,1,Programs,1,Property,1,Python,2,Quarkus,1,Read,1,Real Time,1,Recursion,2,Remove,2,Rest API,1,Schedules,1,Serialization,1,Servlet,2,Sort,1,Sorting Techniques,8,Spring,2,Spring Boot,23,Spring Email,1,Spring MVC,1,Streams,31,String,61,String Programs,28,String Revese,1,StringBuilder,1,Swing,1,System,1,Tags,1,Threads,11,Tomcat,1,Tomcat 8,1,Troubleshoot,26,Unix,3,Updates,3,util,5,While Loop,1,
JavaProgramTo.com: Java 11 String.lines() - Get Stream of Lines
Java 11 String.lines() - Get Stream of Lines
Quick Guide to Java 11 String API new lines() method to convert String to Stream of Strings. Syntax: public Stream lines().
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content