【问题标题】:Get Stream of Child list from a stream [duplicate]从流中获取子列表流[重复]
【发布时间】:2019-04-11 08:56:23
【问题描述】:

我有一个 SeniorEmployee 类,它有一些属性,在同一类下我有 JuniorEmployee 列表。现在我的标准是通过流并基于一些标准在 SeniorEmployee 中迭代,然后对于与过滤条件匹配的 SeniorEmployee,我们需要在 JuniorEmployee 列表中迭代并计算他们的总薪水。那么,如何通过流在单个 lambda 表达式中做到这一点?请帮忙。

SeniorEmployee id 过滤条件是如果 EmpCode 为 10;

    SeniorEmployee{
    empCode;
    List<JuniorEmployee> junEmpList
    }

    JuniorEmployee{
     Emp Id;
    Salary;
}

【问题讨论】:

    标签: java java-8 java-stream


    【解决方案1】:
    seniors.stream().filter(x -> YOUR_SENIOR_CONDITION).mapToInt(x -> x.junEmpList.stream().mapToInt(y -> y.salary).sum()).sum()
    

    或根据您的建议,试试这个:

    seniors.stream().filter(x -> YOUR_SENIOR_CONDITION).flatMap(z -> z.junEmpList.stream()).mapToInt(o -> o.salary).sum();
    

    【讨论】:

    • 我们可以用reduce做吗?我找到了一个解决方案,在第一次过滤后,我使用 flatMap 来获取第二个 List,然后在 iside flatMap 创建另一个 JuniorEmp 流?
    • 检查我编辑的答案。如果对您有用,请将答案标记为正确。
    猜你喜欢
    • 2020-07-10
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    相关资源
    最近更新 更多