[英]How do I use CompletableFuture.supplyAsync together with PriorityBlockingQueue?
[英]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<String>
,它已转换为Stream<Team>
-这两种类型之间没有神奇的转换
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.