簡體   English   中英

在Java中使用flatMap時可以使用組合器功能嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM