如何从 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>>
您可以在其上构建您的进一步逻辑。
给定 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>>
您可以在其上构建您的进一步逻辑。