Creating a functional version of array filtering
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...