我想与 CompletableFuture
一起工作和 Stream
同时。像改造一个 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
,如果我可以那样映射它...
最佳答案
那么,让我们将问题分解为两个较小的问题:
- 正在转换
CompletableFuture<T>
至CompletableFuture<R>
- 正在转换
Stream<String>
进入Stream<Team>
第一个可以使用 thenApply
实现或 thenApplyAsync
.
第二个可以使用标准 map
来实现操作 Stream
实例。
现在,一旦您尝试将它们结合起来,就可以像应用 CompletableFuture<String>
的任何其他转换一样思考。 ,现在应该很清楚了,您可以简单地执行以下操作:
CompletableFuture<Stream<Team>> cf = getMostPopularTeamNames(5)
.thenApply(s -> s.map(name -> new Team(name));
s
是 Stream<String>
转换成 Stream<Team>
- 这两种类型之间没有神奇的转换
关于java - 如何一起使用 completablefuture 和 Streams,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56839326/