1. Overview
In this tutorial, We'll learn how to convert any type of Stream to List in java 8.
Use Collectors.toList() method to convert the lambda Stream Collect to List or ArrayList. When you call toList() method, it creates an ArrayList object and returns to the caller.
But, if you want to get the List as LinkedList then need to use Collectors.toCollection() method.
Let us see the example programs using these two methods for better understanding.
2. Java 8 - Convert Stream to List
Below example program to convert a stream to list using Collectors.toList() method with the help of collect() method.
package com.javaprogramto.java8.collectors.streamtolist;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* Example Stream to List
*
* @author javaprogramto.com
*
*/
public class StreamToListExample {
public static void main(String[] args) {
// creating an list
List<String> names = Arrays.asList("Nick", "Boran", "Tison", "Sunshine");
// converting list to stream
Stream<String> stream = names.stream();
// finally collecting the stream values into a list with any filtering the
// objects.
List<String> finalList = stream.collect(Collectors.toList());
// printing
System.out.println("List values : " + finalList);
}
}
Output:
List values : [Nick, Boran, Tison, Sunshine]
3. Java 8 - Numbers Stream to List With filter() - Stream.of()
In this approach, first we will create the Stream of integers as Stream<Integer> using Stream.of() method and pass the numbers to of() method. We can pass any number of int values comma separated to this method. Because this method takes the input var-args.
package com.javaprogramto.java8.collectors.streamtolist;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* Example on numbers Stream to List
*
* @author javaprogramto.com
*
*/
public class NumbersStreamToListExample {
public static void main(String[] args) {
// Creating a stream using of() method.
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
// Filtering the stream values to get only even numbers and next collect into ArrayList.
List<Integer> finalList = stream.filter(e -> e % 2 == 0).collect(Collectors.toList());
// printing
System.out.println("Final ArrayList values : " + finalList);
}
}
Output:
Final ArrayList values : [2, 4]
In the above program, after adding the first 5 integers to stream and adding filter() to get only the even numbers. Finally, Invoked the collect(Collectors.toList()) method which returns ArrayList instance default and stored the values into the List<Integer> variable.
4. Java 8 Stream to List as LinkedList
In the above sections, we've used Collectors.toList() method to get ArrayList object from stream values. But, if we want to get it as LinkedList then use another Collectors method toCollection() method which takes the LinkedList object as LinkedList::new.
LinkedList::new will create a new LinkedList object using Method Reference concept.
package com.javaprogramto.java8.collectors.streamtolist;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* Example Stream to LinkedList
*
* @author javaprogramto.com
*
*/
public class StreamToLinkedListExample {
public static void main(String[] args) {
// creating an list
List<String> values = Arrays.asList("1", "2", "3", "4", "5");
// converting list to stream
Stream<String> stream = values.stream();
// Collecting the stream values into a LinkedList using stream collectors.
LinkedList<String> linkedList = stream.collect(Collectors.toCollection(LinkedList::new));
// printing
System.out.println("LinkedList values : " + linkedList);
}
}
Output:
LinkedList values : [1, 2, 3, 4, 5]
5. Java 8 - Convert Infinite Stream to List
Java 8 api allows to create infinite streams of number using IntStream.iterate() method.
Let us now convert Infinite stream into List with limiting the number values from unlimited stream using limit() method.
Look at the below example.
limit(): taking first 10 values from infinite stream
boxed(): convert primitive to Wrapper integer object.
toList(): collecting stream values into List.
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
/**
* Example on Infinite Stream to List
*
* @author javaprogramto.com
*
*/
public class StreamToListExample {
public static void main(String[] args) {
// Creating the infinite even numbers stream using iterate() starts from value
// 10.
IntStream infiniteStream = IntStream.iterate(10, i -> i + 2);
// limit() + boxed() + toList() example
List<Integer> finalList = infiniteStream.limit(10).boxed().collect(Collectors.toList());
// printing
System.out.println("List values : " + finalList);
}
}
Output:
List values : [10, 12, 14, 16, 18, 20, 22, 24, 26, 28]
6. Conclusion
In this article, we've seen how to convert stream to list in java 8. Use Collectors.toList() to get the output in ArrayList object and Collectors.toCollection() method to get the output for other collections as LinkedList.
No comments:
Post a Comment
Please do not add any spam links in the comments section.