首页 > 解决方案 > 你可以合并两个 Flux 而不阻塞,使得结果只包含唯一的元素吗?

问题描述

有没有办法合并两个 Flux 使得结果只包含唯一元素?我可以阻塞输出,然后将其转换为一个集合,但是有没有一种依赖阻塞的方法?

来源(科特林)

val set1 = Flux.just(1, 2, 3, 4, 5)
val set2 = Flux.just(2, 4, 6, 8, 10)

val mergedSet = set1.mergeWith(set2)

println(mergedSet.collectList().block())

输出

[1, 2, 3, 4, 5, 2, 4, 6, 8, 10]

期望的输出(顺序不重要)

[1, 2, 3, 4, 5, 6, 8, 10]

标签: reactive-programmingspring-webfluxproject-reactor

解决方案


你可以使用 Flux 的merge方法,然后应用distinct()到它上面。

Flux.merge (Flux.just(1, 2, 3, 4, 5), Flux.just(2, 4, 6, 8, 10)).distinct();

这样你就得到了一个只产生不同值的通量。


推荐阅读