4

非同期で実行されるクエリの入力ストリームがあります。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>です。すべての結果を平坦化して 1 つのリストに結合したいと考えています。フラット化するコレクションの前に .flatMap(List::stream) を使用すると、順序が維持されますか?

4

1 に答える 1