Можете ли вы объединить два потока без блокировки, чтобы результат содержал только уникальные элементы? - PullRequest
0 голосов
/ 02 июня 2018

Есть ли способ объединить два потока так, чтобы результат содержал только уникальные элементы?Я могу заблокировать на выходе и затем преобразовать его в набор, но есть ли способ, который не зависит от блокировки?

Source (Kotlin)

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]

1 Ответ

0 голосов
/ 03 июня 2018

Вы можете использовать метод Flux merge и затем применить к нему distinct().

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

Таким образом, вы получите поток, который производит только отчетливыезначения.

...