首页 > 解决方案 > 打印出过滤流对象的一些字段

问题描述

假设有一个 Fox 类,它有名字、颜色和年龄。假设我有一个狐狸列表,我想打印出那些狐狸的名字,它们的颜色是绿色的。我想使用流来做到这一点。

领域:

我编写了以下代码来进行过滤和系统输出:

foxes.stream().filter(fox -> fox.getColor().equals("green"))
     .forEach(fox -> System.out::println (fox.getName()));

但是,我的代码中存在一些语法问题。

问题是什么?我该如何整理?

标签: javalambdajava-8java-stream

解决方案


您不能将方法引用与 lambdas 结合使用,只需使用一个:

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

推荐阅读