繁体   English   中英

使用 Java8 Stream 迭代 java 嵌套列表

[英]Iterate java nested list using Java8 Stream

我有一个这样的 EmployObject 列表 Java

List<Employee> emp = {emp1, emp2, emp3, emp4 ,...}

Where the Employee class looks like this 

Public Class Employee {
    String EmpId;
    EmpInfo empInfo;
}

public class EmpInfo {
   String salary;
   String address;
   List<Reviews> reviews;
}

public class Reviews {
   int ratings;
   boolean isGood;
}

我想使用 Java8 流来遍历列表 (List emp) 并过滤具有多个评级 (List lenghth > 1) 且评级良好 (isGood == true) 的 EmpId。 新列表看起来像

列出 empRating = {empRating1, empRating2, ...}

public class EmpRating {
   String empId;
   int ratings;
}


我尝试了不同的方法,但无法找到优化的解决方案。 需要帮助。

只是一个例子:

  • 选择至少有一个评级为良好的isGood
  • 计算所有评级的总和
employeeList.stream()
    .filter(emp -> emp.getEmpInfo().getReviews().size() > 1
                && emp.getEmpInfo().getReviews().stream().anyMatch(Reviews::isGood))
    .map(emp -> new EmpRating(
        emp.getEmpId(), 
        emp.getEmpInfo().getReviews().stream().mapToInt(Reviews::getRatings).sum()
    ))
    .collect(Collectors.toList());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM