Я новичок в потоках и лямбде. Ищу более аккуратный код для этого варианта использования.
У меня есть два списка типов объектов
class Employee{
long empId;
String empName;
String deptName
}
и
class Department{
long deptId;
String deptName;
long empId;
}
Первоначально список сотрудников заполняется только empId
и empName
. И список отделов заполнен всеми полями deptId
, deptName
, empId
.
Я должен заполнить соответствующий deptName
в списке сотрудников из списка отделов.
Это что я сделал.
- Сделал карту
empID
и deptName
из DepartmentList - Итерировать и сопоставить с картой
Map<Long,String> departmentMap = departmentList.stream()
.collect((Collectors.toMap(Department::getEmpId, Department::getDeptName)));
employeeList.forEach(emp -> {
if(departmentMap.containsKey(emp.getEmpId())){
emp.setDeptName(departmentMap.get(emp.getEmpId()));
}
});
Есть ли более чистый или аккуратный способ справиться с этим в Java 8/10?