我有这段代码:
userRepo.findAll().stream()
.map(u -> {
u.setName(name);
return u;
})
.flatMap(u -> {
return employeeRepo.findById(u.getId());
}, //???)
在//???
中,我需要一个组合函数来同时获取用户和员工。我知道如何在RxJava中实现它,而不是在普通的Java中。这可能吗?
答案 0 :(得分:1)
也许你可以使用类似的东西:
Map<User, Employee> userEmployee = userRepo.findAll().stream()
.map(u -> {
u.setName(name);
return u;
})
.collect(Collectors.toMap(
u -> u,
u -> employeeRepo.findById(u.getId())
))
这将创建一个地图,其中User
为关键字,Employee
为值。
答案 1 :(得分:1)
最有效的方法是使用scala desugars for comprehension:嵌套flatMap
和最深嵌套中的map
。
userRepo.findAll().stream()
.flatMap(u -> {
u.setName(name); //I don't like this line
return employeeRepo.findById(u.getId()).map(e->{
return new Pair(u,e);
});
});
假设有一个班级Pair
。