Let's suppose there is a Fox class, which has got name, color and age. Let's assume that I have a list of foxes, and I want to print out those foxes' names, whose colours are green. I want to use streams to do so.
Fields:
I have written the following code to do the filtering and Sysout:
foxes.stream().filter(fox -> fox.getColor().equals("green"))
.forEach(fox -> System.out::println (fox.getName()));
However, there are some syntax issues in my code.
What is the problem? How should I sort it out?
You cannot combine method references with lambdas, just use one:
foxes.stream()
.filter(fox -> fox.getColor().equals("green"))
.forEach(fox -> System.out.println(fox.getName()));
or the other:
foxes.stream()
.filter(fox -> fox.getColor().equals("green"))
.map(Fox::getName) // required in order to use method reference in the following terminal operation
.forEach(System.out::println);
Simply use :
foxes.stream().filter(fox -> fox.getColor().equals("green"))
.forEach(fox -> System.out.println(fox.getName()));
The reason is because you cannot use method references and lambda expressions together.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With