Karan Verma Karan Verma - 10 days ago 5
Java Question

Java 8 Stream - Why is filter method not executing?

I am learning filtering using java stream.
But the stream after filtering is not printing anything.
I think the filter method is not getting executed.
My filtering code is as follows:

Stream.of("d2", "a2", "b1", "b3", "c")
.filter(s -> {
s.startsWith("b");
System.out.println("filter: " + s);
return true;
});


There is no compilation error and no exception also.
Any suggestion?

Answer

filter is an intermediate operation, which will be executed only if the Stream pipeline ends in a terminal operation.

For example :

Stream.of("d2", "a2", "b1", "b3", "c")
  .filter(s -> {
        s.startsWith("b");
        System.out.println("filter: " + s);
        return true;
  })
  .forEach (System.out::println);

As it is, your filter method is useless, since it always returns true, and thus performs no filtering.