Java Stream toArray()

Learn to convert a Stream to an array using Stream toArray() API. In this totorial, we will see multiple examples for collecting the Stream elements into an array.

1. Stream toArray() Method

The toArray() method returns an array containing the elements of the given stream. This is a terminal operation.

Object[] toArray()
<T> T[]  toArray(IntFunction<T[]> generator)

toArray() method is an overloaded method. The second method uses a generator function to allocate the returned array.

The generator function takes an integer, which is the size of the desired array and produces an array of the desired size.

2. Stream toArray() Example

Example 1: Converting Stream of String to Array of String

In the given example, we are converting a stream to an array using using toArray() API.

Stream<String> tokenStream = Arrays.asList("A", "B", "C", "D").stream();	//stream
		
String[] tokenArray = tokenStream.toArray(String[]::new); 	//array

System.out.println(Arrays.toString(tokenArray));	

Program output.

[A, B, C, D]

Example 2: Converting an Infinite Stream to an Array

To convert an infinite stream into array, we must limit the stream to a finite number of elements.

Infinite stream of Integers
IntStream infiniteNumberStream = IntStream.iterate(1, i -> i+1);
		
int[] intArray = infiniteNumberStream.limit(10)
			.toArray();

System.out.println(Arrays.toString(intArray));	

Program output.

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Infinite boxed stream of Integers

IntStream infiniteNumberStream = IntStream.iterate(1, i -> i+1);

Integer[] integerArray = infiniteNumberStream.limit(10)
					.boxed()
					.toArray(Integer[]::new);

System.out.println(Arrays.toString(integerArray));

Program output.

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Example 3: Stream filter and collect to an Array

Sometimes we need to find specific items in stream and then add only those elements to array. Here, we can use Stream.filter() method to pass a predicate which will return only those elements who match the pre-condition.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Main 
{
	public static void main(String[] args) 
	{
		List<Employee> employeeList = new ArrayList<>(Arrays.asList(
							new Employee(1, "A", 100),
							new Employee(2, "B", 200),
							new Employee(3, "C", 300),
							new Employee(4, "D", 400),
							new Employee(5, "E", 500),
							new Employee(6, "F", 600)));
		
		Employee[] employeesArray = employeeList.stream()
						.filter(e -> e.getSalary() < 400)
						.toArray(Employee[]::new);
		
		System.out.println(Arrays.toString(employeesArray));
	}
}

Program output.

[Employee [id=1, name=A, salary=100.0], 
Employee [id=2, name=B, salary=200.0], 
Employee [id=3, name=C, salary=300.0]]

3. Conclusion

We can use Stream toArray() function is variety of ways to collect stream elements into an array in all usescases.

Happy Learning !!

Leave a Reply

0 Comments
Inline Feedbacks
View all comments

About Us

HowToDoInJava provides tutorials and how-to guides on Java and related technologies.

It also shares the best practices, algorithms & solutions, and frequently asked interview questions.

Our Blogs

REST API Tutorial