【发布时间】:2022-02-23 04:15:49
【问题描述】:
我正在从 db 中获取数据并将其存储在列表中。然后基于 id,我想创建新的对象。我已经使用旧的 for 循环方法实现了它。我正在尝试使用 java 流来实现它。有什么帮助吗?谢谢。
List<Employee> emp = new ArrayList<Employee>();
emp.add(new Employee(1, "Ben", "Glasgow"));
emp.add(new Employee(2, "Max", "Seattle"));
emp.add(new Employee(3, "Sam", "Mumbai"));
emp.add(new Employee(4, "John", "Aukland"));
emp.add(new Employee(5, "Rob", "Tokyo"));
List<Department> dpt = new ArrayList<Department>();
dpt.add(new Department(1, 40000, "tech"));
dpt.add(new Department(2, 30000, "mgm"));
dpt.add(new Department(3, 50000, "tech"));
dpt.add(new Department(4, 30000, "mgm"));
List<EmpDep> empDep = new ArrayList<EmpDep>();
/**How to do this using stream
for (int i = 0; i < emp.size(); i++){
empDep.add(new EmpDep(emp.get(i).getId(), emp.get(i).getName(), dpt.get(i).getSalary()));
}
*/
【问题讨论】:
-
您说您想“基于 id”加入,但您的循环只是组合相同列表索引处的对象,并且会因第二个列表没有足够的元素而失败并出现异常。部门和员工一样多是没有意义的。员工应该有一个属性来确定相应的部门,并且该属性不应该是员工的唯一 id。然后,考虑在数据库中进行连接并获取结果,而不是手动执行数据库的工作。
标签: collections java-8 java-stream