java - 比较两个列表并分配到新的对象列表中
问题描述
我有一个列表,其中包含 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 循环来执行此操作,但我想使用 lambda 和 java 8 的流来实现此输出。
解决方案
首先使用 groupingBy 流式传输List<Department>
,Map<String,List<String>>
这是员工 ID 作为键的映射,值是部门列表
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());
请注意,如果 groupby不包含员工 ID 和值,您可能会为List<String> employee_Department;
inExpectedResult
Map
旁注: class
小写Class
是错误的,部门拼写更正
推荐阅读
- javascript - PHP Ajax 响应在被 javascript 解析时给出未定义的数据
- ruby - ruby 有没有办法完全从字符串中取消转义字符?
- amazon-dynamodb - 没有更新任何内容时如何对 DynamoDB UpdateItem 调用收费?
- jquery - AddClass RemoveClass 在浏览器上的行为不同
- javascript - 将 SQL 行拆分为两行并正确构造
- python - 在python中将对象存储在二维数组中?
- java - 此 AsyncTask 类应该是静态的,否则可能会通过 YouTubeExtractor 发生泄漏
- javascript - 如何在碰撞时停止精灵(防止它在墙上行走)?
- java - 如何从片段中打开新活动?
- python - Python Arrival Time Estimator 显示问题