繁体   English   中英

如何同时使用completablefuture和Streams

[英]How to use completablefuture and Streams together

我想同时使用CompletableFutureStream 像将CompletableFuture<Stream<String>>转换为CompletableFuture<Stream<Team>>

我已经完成了从CompletableFuture<String>CompletableFuture<Integer>类似操作。

CompletableFuture<Stream<String>> getMostPopularTeamNames(int maxResults) {
    CompletableFuture<Stream<String>> mostPopularTeamNames;

    WorldCupSocialApi.getMostPopularTeamNames(1, maxResults, teams -> {
        mostPopularTeamNames = CompletableFuture.supplyAsync(() -> teams.stream());
    });

    return mostPopularTeamNames;
}

我正在尝试做类似的事情:

CompletableFuture<Stream<Team>> cf = getMostPopularTeamNames(5).thenApply(s -> {
    s.map(name -> new Team(name))
}

但是我不确定我的s是将String还是Stream ,以及我是否可以将其映射为...

因此,让我们将问题分解为两个较小的问题:

  1. CompletableFuture<T>转换为CompletableFuture<R>
  2. Stream<String>转换为Stream<Team>

可以使用thenApplythenApplyAsync实现第一个。 第二个可以使用Stream实例上的标准map操作来实现。

现在,一旦您尝试将它们组合在一起,就可以像应用CompletableFuture<String>任何其他转换一样进行思考,现在应该可以简单地做到这一点了:

CompletableFuture<Stream<Team>> cf = getMostPopularTeamNames(5)
  .thenApply(s -> s.map(name -> new Team(name));

s是一个Stream<String> ,它已转换为Stream<Team> -这两种类型之间没有神奇的转换

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM