Printing out some fields of the objects of a filtered stream

  • A+
Category:Languages

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:

  • name: private String
  • color: private String
  • age: private Integer

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); 

Comment

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: