Сравнение двух списков и назначение в новый список объектов - PullRequest
0 голосов
/ 28 января 2019

У меня есть один список, который содержит объекты класса Employee, а другой список содержит объекты класса Departments, как показано ниже: -

Class Employee {
String emolpyee_id;
String employee_Name;
}
Class Dapartment {
String emolpyee_id;
String employee_Department;
}

List<Employee> empl =  = new ArrayList<>();
List<Dapartment> depart =  = new ArrayList<>();

Employee e1 = new Employee("12","Testing");
Employee e2 = new Employee("16","TestingOthers");

Dapartment d1 = new Dapartment("12","IT");
Dapartment d2 = new Dapartment("12","Networking");
Dapartment d3 = new Dapartment("12","Financing");
Dapartment d4 = new Dapartment("16","IT");
Dapartment d5 = new Dapartment("16","Networking");

empl.add(e1);
empl.add(e2);

depart.add(d1);
depart.add(d2);
depart.add(d3);
depart.add(d4);
depart.add(d5);

Class ExpectedResult {
String emolpyee_id;
String employee_Name;
List<String> employee_Department;
}

List<ExpectedResult> expResult = {{"12","Testing",{"IT","Networking","Financing"}} ,{"16","TestingOthers",{"IT","Networking"}}}

Я знаю, что мы можем выполнить это, используя цикл for for normal, но я хочу добитьсяэтот вывод с использованием лямбды и потока Java 8.

1 Ответ

0 голосов
/ 28 января 2019

Сначала направьте List<Department> в Map<String,List<String>>, используя groupingBy, который представляет собой идентификатор сотрудника в качестве ключа, а значение - список отделов

Map<String, List<String>> groupby = depart.stream().
            collect(Collectors.groupingBy(Department::getEmolpyee_id, Collectors.mapping(Department::getEmployee_Department, Collectors.toList())));

И затем для каждого объекта в List<Employee> получитеОтделы от Map

List<ExpectedResult> expected = empl.stream().
            map(emp-> new ExpectedResult(emp.getEmolpyee_id(),emp.getEmployee_Name(),groupby.get(emp.getEmolpyee_id()))).collect(Collectors.toList());

Примечание Вы можете получить нулевое значение для List<String> employee_Department; в ExpectedResult, если groupby Map не содержит идентификатор сотрудника и значение

Боковое примечание: class в нижнем регистре Class неверно, а Департамент исправления орфографии

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...