the*_*ica 44 java java-8 completable-future
Java 8有一个函数CompletableFuture.allOf(CompletableFuture<?>...cfs),它返回一个CompletableFuture在所有给定的期货完成时完成的函数.
但是,我几乎总是不处理一个CompletableFutures 数组,而是有一个List<CompletableFuture>.当然,我可以使用这种toArray()方法,但是这必须经常在数组和列表之间来回转换,这有点痛苦.
如果有一个光滑的方式来CompletableFuture<List<T>>换取a List<CompletableFuture<T>>,而不是经常不得不投入中间数组创建,那将是非常好的.有没有人知道在Java 8中这样做的方法?
Dee*_*pak 32
不幸的是,据我所知,可完成的期货不支持收藏.
你可以做这样的事情来使代码更清洁,但它基本上做同样的事情:
public <T> CompletableFuture<List<T>> allOf(List<CompletableFuture<T>> futuresList) {
CompletableFuture<Void> allFuturesResult =
CompletableFuture.allOf(futuresList.toArray());
return allFuturesResult.thenApply(v ->
futuresList.stream().
map(future -> future.join()).
collect(Collectors.<T>toList())
);
}
Run Code Online (Sandbox Code Playgroud)
发现这个非常有用的信息:http://www.nurkiewicz.com/2013/05/java-8-completablefuture-in-action.html
| 归档时间: |
|
| 查看次数: |
50637 次 |
| 最近记录: |