Java 8 introduced the Stream API, which is a sequence of objects supporting sequential and parallel aggregate operations. By design, a Stream doesn't store any data, so it is not a data structure. It also doesn't modify the original data source.

In simple words, Java 8 streams are just wrappers around a data source like collections, arrays, or other I/O channels. The Stream API provides methods that can be chained together to produce the desired results.

In this article, you'll learn how to reverse the elements of a stream in Java 8 and higher. Note that this tutorial is not about sorting a stream in reverse order, but simply reversing the position of the elements in the Stream.

Let us start s with a basic example:

// create a simple Stream of strings
Stream<String> stream = Stream.of("Alex", "John", "Baray", "Emma");

// reserse stream and print elements
stream.collect(Collectors.toCollection(LinkedList::new))
        .descendingIterator().forEachRemaining(System.out::println);

In the above example, we first created a Stream of string, and then collect the elements into a LinkedList. Since the LinkedList is a double-linked data structure in Java, we can easily iterate it in any direction: forward as well as backward.

We preferred to loop over the LinkedList object in the reverse direction. Here is how the output looks like:

Emma
Baray
John
Alex

✌️ Like this article? Follow @attacomsian on Twitter. You can also follow me on LinkedIn and DEV. Subscribe to RSS Feed.

👋 If you enjoy reading my articles and want to support me to continue creating free tutorials, ☕ Buy me a coffee (cost $5).