Мне нравится эффективность, поэтому я предпочитаю использовать то, что доказано, без чрезмерной зависимости от потоковых (или потоковых) операций.
Недостатком этого является необходимость собрать один из потоков в отсортированный список. Возможно, вы заранее узнаете, короче ли один Flux. Однако мне кажется, что им придется сделать это, несмотря ни на что, поскольку вам нужно сравнивать каждый элемент потока A со всеми элементами потока B (или, по крайней мере, пока вы не найдете совпадение).
Итак, соберите Flux A в отсортированный список, и тогда нет причин не использовать Collections::binarySearch
для вашего собранного / отсортированного потока.
a.collectSortedList()
.flatMapMany(sorteda -> b.filter(be->Collections.binarySearch(sorteda, be)>=0))
.subscribe(System.out::println);