[英]When to use .flatMap() on a Mono instead of just calling a function on a value?
[英]Is it possible to use a combiner function when flatMap in Java?
我有以下代碼:
userRepo.findAll().stream()
.map(u -> {
u.setName(name);
return u;
})
.flatMap(u -> {
return employeeRepo.findById(u.getId());
}, //???)
在//???
,我需要一個合並器函數來同時獲取User和Employee。 我知道如何在RxJava中做到這一點,但在普通Java中卻不行。 那可能嗎?
也許您可以使用類似:
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
為值的地圖。
最實用的方法是使用scala desugars進行以下操作:嵌套的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
類別。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.