【问题标题】:Comparing two lists and assign into new list of objects比较两个列表并分配到新的对象列表中
【发布时间】:2019-01-28 01:02:27
【问题描述】:

我有一个列表,其中包含 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 的流来实现此输出。

【问题讨论】:

  • Stackoverflow 不是一个让你编程的地方。如果您是 Java 8 新手,为什么不阅读教程或书籍?

标签: java list lambda java-8 java-stream


【解决方案1】:

首先使用 groupingBy 将 List&lt;Department&gt; 流式传输到 Map&lt;String,List&lt;String&gt;&gt;,这是员工 ID 作为键的映射,值是部门列表

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

然后对于List&lt;Employee&gt; 中的每个对象,从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 Map 不包含员工 ID 和值,则 ExpectedResult 中的 List&lt;String&gt; employee_Department; 可能为 null

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

【讨论】:

  • 感谢您的回复..它真的节省了我的时间..再次非常感谢...
猜你喜欢
  • 1970-01-01
  • 2017-05-17
  • 2021-10-03
  • 1970-01-01
  • 2019-12-06
  • 2019-11-16
  • 1970-01-01
  • 1970-01-01
  • 2019-09-01
相关资源
最近更新 更多