我有一个异步执行的查询输入流。我想确保当我使用时Completablefuture::join
,这些要求的结果是按照输入查询流的顺序收集的。
这就是我的代码的样子:
queries.stream()
.map(query -> CompletableFuture.supplyAsync(() -> {
try {
return SQLQueryEngine.execute(query);
} catch (InternalErrorException e) {
throw new RuntimeException(e);
}
}))
.map(CompletableFuture::join)
.collect(Collectors.toList());
SQLQueryEngine.execute(查询); 返回一个List<Results>
所以输出是List<List<Result>
. 我想将所有结果展平并合并到一个列表中。如果我在收集之前使用 .flatMap(List::stream) 来展平,它会保持排序吗?