Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 比较两个列表并分配到新的对象列表_Java_List_Lambda_Java 8_Java Stream - Fatal编程技术网

Java 比较两个列表并分配到新的对象列表

Java 比较两个列表并分配到新的对象列表,java,list,lambda,java-8,java-stream,Java,List,Lambda,Java 8,Java Stream,我有一个包含班级员工对象的列表,其他列表包含班级部门对象,如下所示:- Class Employee { String emolpyee_id; String employee_Name; } Class Dapartment { String emolpyee_id; String employee_Department; } List<Employee> empl = = new ArrayList<>(); List<Dapartment> depa

我有一个包含班级员工对象的列表,其他列表包含班级部门对象,如下所示:-

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循环执行此操作,但我想使用lambda和java 8流实现此输出。

首先使用groupingBy将列表流到映射中,这是作为键的员工id映射,值是部门列表

Map<String, List<String>> groupby = depart.stream().
            collect(Collectors.groupingBy(Department::getEmolpyee_id, Collectors.mapping(Department::getEmployee_Department, Collectors.toList())));
注意,对于列出员工\部门,您可能会得到null;如果groupby映射不包含员工id和值,则在ExpectedResult中


旁注:类是小写的,类是错误的,部门拼写更正

Stackoverflow不是让你编程的地方。如果您是Java 8新手,为什么不读一本教程或一本书呢?谢谢您的回复..这真的节省了我的时间..再次非常感谢。。。
List<ExpectedResult> expected = empl.stream().
            map(emp-> new ExpectedResult(emp.getEmolpyee_id(),emp.getEmployee_Name(),groupby.get(emp.getEmolpyee_id()))).collect(Collectors.toList());