【问题标题】:Filtering a list using Java 8 lambda expressions使用 Java 8 lambda 表达式过滤列表
【发布时间】:2018-06-07 04:46:52
【问题描述】:

我有一个Project 类:

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

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

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

谢谢

【问题讨论】:

  • 您是否已经在不使用 java 8 功能的情况下编写了您正在尝试做的事情。我们很乐意帮助您从这个转变为使用流和 lambda。

标签: java lambda filter java-8 java-stream


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-01-31
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多