我在下面的现有代码中将一个对象转换为另一个对象-
for(Department dept : company.getDepartments()) {
if(!isEmpty(dept.getEmployees())) {
for(Employee emp : dept.getEmployees()) {
try {
employyeV2List.add(new EmployeeV2(emp.getId(), emp.getFirstName(),..., dept.getId()));
} catch (ParseException e) {
//error logger
}
}
}
}
我想在这里添加java 8流api而不是两个for循环,但是如果您在
try block
中看到dept.getId()
,则我无法在流API中访问它。我在下面尝试-List<Employee> employees = company.getDepartment().stream().map(x -> x.getEmployees())
.flatMap(x -> x.stream()).collect(Collectors.toList());
List<EmployeeV2> employeeV2List = employees.stream().map(x -> getEmployeeV2(x)).collect(Collectors.toList());
在
getEmployeeV2()
中,我正在创建EmployeeV2对象。但是我不确定如何将部门传递到这里,以便可以访问部门ID。 最佳答案
你可以这样做
List<EmployeeV2> result = company.getDepartment().stream()
.flatMap(d -> d.getEmployees().stream()
.map(e -> new EmployeeV2(e.getId(), e.getFirstName(), d.getId())))
.collect(Collectors.toList());