Java 转换地图<;字符串,CompletableFuture<;回应>&燃气轮机;完成未来<;地图<;字符串,响应>&燃气轮机;

Java 转换地图<;字符串,CompletableFuture<;回应>&燃气轮机;完成未来<;地图<;字符串,响应>&燃气轮机;,java,java-stream,completable-future,Java,Java Stream,Completable Future,我有:Map 我期望:CompletableFuture 我希望在每个“内部”未来完成后完成结果,然后有一个映射,该映射将字符串映射到已完成的结果。 我正在寻找一种优雅的方法来实现这一点,并尝试使用streams,但现在失败了 我看到过一种类似的方法,但在这里有列表:在每个CompletableFuture上调用join是没有办法的,但是您可以使用CompletableFuture.allOf来安排在所有未来完成时执行的操作,因此没有join调用会阻止线程。然后,使用流API执行批量操作: Ma

我有:
Map

我期望:
CompletableFuture

我希望在每个“内部”未来完成后完成结果,然后有一个映射,该映射将字符串映射到已完成的结果。 我正在寻找一种优雅的方法来实现这一点,并尝试使用streams,但现在失败了


我看到过一种类似的方法,但在这里有列表:

在每个
CompletableFuture
上调用
join
是没有办法的,但是您可以使用
CompletableFuture.allOf
来安排在所有未来完成时执行的操作,因此没有
join
调用会阻止线程。然后,使用流API执行批量操作:

Map<String, CompletableFuture<Response>> map = …

CompletableFuture<Map<String, Response>> f =
    CompletableFuture.allOf(map.values().toArray(new CompletableFuture[0]))
        .thenApply(_void -> map.entrySet().stream()
            .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue().join())));
Map=…
完全未来=
CompletableFuture.allOf(map.values().toArray(新的CompletableFuture[0]))
.thenApply(\u void->map.entrySet().stream())
.collect(Collectors.toMap(Map.Entry::getKey,e->e.getValue().join());

问题中链接到的相同的
CompletableFutures
类现在有了一个方法,这要归功于以下PR: