java - 使用 Java8 Stream 迭代 java 嵌套列表
问题描述
我有一个这样的 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());