The preceding code that declared the filterNumbersWithFunction
method represents an imperative version of array filtering with an external for
loop. We can use the filter
method available for a Stream<T>
object, in this case, a Stream<Integer>
object, and achieve the same goal with a functional approach.
The next lines use a functional approach to generate a List<Integer>
with the numbers included in the List<Integer> range1to20
that are divisible by 3
. The code file for the sample is included in the java_9_oop_chapter_12_01
folder, in the example12_04.java
file.
List<Integer> divisibleBy3Numbers2 = range1to20.stream().filter(n -> n % 3 == 0).collect(Collectors.toList());
If we want the previous code to run in JShell, we must enter all the code in a single line, which wouldn't be necessary for the Java compiler to successfully compile the code. It is a specific problem with JShell, streams, and lambda expression...