java - 使用 Java 8 lambda 表达式过滤列表

标签 java lambda filter java-8 java-stream

我有一个 Project类:

class Project {
    List<Name> names;
    int year;
    public List<Name> getNames(){
        return names;
    }
}

然后我有另一个主要功能,我有一个 List<Project>并且必须根据年份过滤该项目列表并获得名称列表作为结果。

你能告诉我如何使用 java 8 lambda 表达式来实现吗?

谢谢

最佳答案

好吧,您没有说明确切的过滤条件,但假设您希望按给定年份过滤元素:

List<Name> names = projects.stream()
    .filter(p -> p.getYear() == someYear) // keep only projects of a 
                                         // given year
    .flatMap(p -> p.getNames().stream()) // get a Stream of all the
                                        // Names of all Projects
                                        // that passed the filter
    .collect(Collectors.toList());     // collect to a List

关于java - 使用 Java 8 lambda 表达式过滤列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47976942/

相关文章:

java - 为什么 bubbleDown 方法没有按预期工作(堆排序)?

Java 与 MySql 数据库的连接问题

java - 将文本字段与 Java 中的复选框关联起来

java - 关于不同jar中存在两个同名类?

java - List<Object[]> 到 Java 8 中的 Map<K, V>

image - 如何使用图像处理从图像中去除反射

lambda - 为什么 C++14 中的移动捕获不使用 [&&move_me_into_lambda] 语法?

java - Java 中带有 lambda 表达式的 forEach 方法是什么?

mysql - SQL : using clause with "ORDER BY"

filter - 在 Jetty 中设置 GzipFilter 时出现问题