gpt4 book ai didi

带有集合或列表的 Java 8 CompletableFuture.allOf(...)

转载 作者:IT老高 更新时间:2023-10-28 20:45:44 26 4
gpt4 key购买 nike

Java 8 有一个函数 CompletableFuture.allOf(CompletableFuture<?>...cfs) 返回 CompletableFuture当所有给定的 future 完成时,即完成。

但是,我几乎总是不处理 CompletableFuture 的数组。 s,而是有一个 List<CompletableFuture> .当然,我可以使用toArray()方法,但这最终会有点痛苦,不得不不断地在数组和列表之间来回转换。

如果有一种巧妙的方法获得 CompletableFuture<List<T>> 那就太好了换取 List<CompletableFuture<T>> ,而不是不断地投入中间数组创建。有谁知道在 Java 8 中执行此操作的方法?

最佳答案

不幸的是,据我所知 CompletableFuture 不支持集合。

你可以做这样的事情来使代码更简洁,但它本质上是做同样的事情

public <T> CompletableFuture<List<T>> allOf(List<CompletableFuture<T>> futuresList) {
CompletableFuture<Void> allFuturesResult =
CompletableFuture.allOf(futuresList.toArray(new CompletableFuture[futuresList.size()]));
return allFuturesResult.thenApply(v ->
futuresList.stream().
map(future -> future.join()).
collect(Collectors.<T>toList())
);
}

发现这非常有用:http://www.nurkiewicz.com/2013/05/java-8-completablefuture-in-action.html

关于带有集合或列表的 Java 8 CompletableFuture.allOf(...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35809827/

26 4 0