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: