Java 8 Streams Intermediate Operation

0 165

Get real time updates directly on you device, subscribe now.

3 min read

In the previous journal entry “Understanding Java 8 Streams with Examples” we have looked at the core concepts of Java 8 Streams API with some examples. Now, in this journal we will take a look at some more examples of Java 8 Stream operations: Intermediate.

Java 8 Stream Intermediate Operation Example

Let’s have a look at some of the basic use cases of intermediate operation methods provided by Stream API.

  1. filter()
  2. map()
  3. sorted()
  4. flatMap()

filter(): We can use filter() method to test stream elements for a condition and generate filtered list.

Java Stream filter() Example for a List

public class Java8StreamFilter {

    public static void main(String[] args) {

        List<String> lines = Arrays.asList("java", "stream", "oldjava");

        List<String> result =                // convert list to stream
                .filter(line -> !"oldjava".equals(line))    // filter and remove the oldjava from the list
                .collect(Collectors.toList());              // collect the output and convert streams to a List




//OUTPUT : java, stream

Java Stream filter() Example with Objects

class Person {
	private String name;
	private int age;

	public Person() {}

	public Person(String name, int age) { = name;
		this.age = age;

	public String getName() {

	public void setName(String value) { = value;

	public int getAge() {
		return this.age;

	public void setAge(int value) {
		this.age = value;

public class Java8StreamFilter {
	public static void main(String[] args) {
		List<Person> personList = Arrays.asList(
			new Person("Smith", 37),
			new Person("John", 24),
			new Person("Kirsten", 33)

		Person result =                     // Convert to steam
                .filter(x -> "John".equals(x.getName()))        // we want "John" only
                .findAny()                                      // If 'findAny' then return found
                .orElse(null);                                  // If not found, return null



// OUTPUT : Person{name="John", age=24}

map(): We can use map() to apply functions to an stream. In the below example we will try to apply lower case function to a list of Strings.

Java Stream map() Example

Stream<String> names = Stream.of("Kirsten", "John", "Philips");
System.out.println( -> {
		return s.toLowerCase();

//OUTPUT: [kirsten, john, philips]

sorted(): We can use sorted() to sort the stream elements by passing Comparator argument.

Java Stream sorted() Example

Stream<String> reverseSortedName = Stream.of("Kirsten", "John", "Philips");
List<String> reverseSorted = reverseSortedName
System.out.println("Reverse Sort: " + reverseSorted);

Stream<String> sortedName = Stream.of("Kirsten", "John", "Philips");
List<String> naturalSorted = sortedName.sorted().collect(Collectors.toList());
System.out.println("Default Natural Sort: " + naturalSorted);

Reverse Sort: [Philips, Kirsten, John]
Default Natural Sort: [John, Kirsten, Philips]

flatMap(): Create a stream from the stream of list. Let’s see a simple example to clear this doubt.

Java Stream flatMap() Example

Stream<List<String>> namesList = Stream.of(

Stream<String> flatMapStream = namesList
				.flatMap(stringList ->;