让我们假设有一个Fox类,它具有名称,颜色和年龄。假设我有一个狐狸列表,并且想打印出这些狐狸的名字,它们的颜色是绿色。我想使用流来做到这一点。
字段:
我编写了以下代码来进行过滤和Sysout:
gatsby build
但是,我的代码中存在一些语法问题。
出什么问题了?我应该如何解决?
答案 0 :(得分:9)
您不能将方法引用与lambda结合使用,只能使用以下方法之一:
foxes.stream()
.filter(fox -> fox.getColor().equals("green"))
.forEach(fox -> System.out.println(fox.getName()));
或另一个:
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);
答案 1 :(得分:8)
只需使用:
foxes.stream().filter(fox -> fox.getColor().equals("green"))
.forEach(fox -> System.out.println(fox.getName()));
原因是因为您不能同时使用方法引用和lambda表达式。
答案 2 :(得分:1)
您可以尝试:
foxes.stream().filter(this::isColorGreen).map(Fox::getName).forEach(System.out::println);
public boolean isColorGreen(Fox fox) {
return fox.getColor().equals("green");
}