如何一起使用 completablefuture 和 Streams
How to use completablefuture and Streams together
我想同时与 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
来实现。
第二个可以在 Stream
实例上使用标准 map
操作来实现。
现在,一旦您尝试将它们组合起来,就像应用 CompletableFuture<String>
的任何其他转换一样思考,现在应该清楚您可以简单地执行以下操作:
CompletableFuture<Stream<Team>> cf = getMostPopularTeamNames(5)
.thenApply(s -> s.map(name -> new Team(name));
s
是被转换为 Stream<Team>
的 Stream<String>
- 这两种类型之间没有神奇的转换
我想同时与 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
来实现。
第二个可以在 Stream
实例上使用标准 map
操作来实现。
现在,一旦您尝试将它们组合起来,就像应用 CompletableFuture<String>
的任何其他转换一样思考,现在应该清楚您可以简单地执行以下操作:
CompletableFuture<Stream<Team>> cf = getMostPopularTeamNames(5)
.thenApply(s -> s.map(name -> new Team(name));
s
是被转换为 Stream<Team>
的 Stream<String>
- 这两种类型之间没有神奇的转换