java - 在java 8中访问从第一个流到下一个流api的对象引用
问题描述
我有以下现有代码将一个对象转换为另一个对象-
for(Department dept : company.getDepartments()) {
if(!isEmpty(dept.getEmployees())) {
for(Employee emp : dept.getEmployees()) {
try {
employyeV2List.add(new EmployeeV2(emp.getId(), emp.getFirstName(),..., dept.getId()));
} catch (ParseException e) {
//error logger
}
}
}
}
我想在此处添加 java 8 流 api 而不是两个 for 循环,但是如果您在其中看到try block
我dept.getId()
无法在流 API 中访问的内容。我在下面试过 -
List<Employee> employees = company.getDepartment().stream().map(x -> x.getEmployees())
.flatMap(x -> x.stream()).collect(Collectors.toList());
List<EmployeeV2> employeeV2List = employees.stream().map(x -> getEmployeeV2(x)).collect(Collectors.toList());
在这里,getEmployeeV2()
我正在创建 EmployeeV2 对象。但我不确定如何将部门传递到此处,以便访问部门 ID。
解决方案
你可以这样做,
List<EmployeeV2> result = company.getDepartment().stream()
.flatMap(d -> d.getEmployees().stream()
.map(e -> new EmployeeV2(e.getId(), e.getFirstName(), d.getId())))
.collect(Collectors.toList());
推荐阅读
- python-3.x - 使用硒刮擦
- javascript - 获取滚动条宽度
- java - 根据日期对未排序的 ArrayList 中的 int 值求和
- ruby-on-rails - 如何在没有弃用警告的情况下运行 rspec
- c# - C# 中原始类型属性的延迟/强制初始化
- c++ - 使用 TinyXML2 在 C++ 中读取 XML 文件
- c++ - 用户定义的结构是否有默认的 C++ 比较器?
- amazon-web-services - 是否有 Windows 替代 Mainframe FileAID?
- c# - 为什么这个 c# 代码只接受一次输入?
- c# - 对于 iOS WKWebView 和 Uno 2.4 上的 UInt32 错误,值太大或太小