如何从 2 个给定的 Flux 中获取公共元素?

How to get a common element from 2 given Flux?

给定 2 Flux-

Flux<String> flux1 = ...
Flux<String> flux2 = ...

现在我需要检查两个 Flux 中是否存在公共字符串。检查后,响应可以是布尔值或 List<String>

Flux 是一个连续的元素流,它发出 0 到 N 个元素,然后完成(成功或出错)。所以在这种情况下,我们必须在值可用时将它们聚合到一个列表中。您可以使用 Flux 的 collectList() 运算符。

public Mono<List<String>> getCommonElements(Flux<String> flux1, Flux<String> flux2) {
    return flux1.collectList().zipWith(flux2.collectList())
            .map(tuple2 -> {
                List<String> commonElements = new ArrayList<>(tuple2.getT2());
                commonElements.retainAll(tuple2.getT1());
                return commonElements;
            });
            // If you want to return a Mono<Boolean>
            // .map(List::isEmpty);
}

这个 returns 一个 Mono<List<String>> 您可以在其上构建您的进一步逻辑。