2017-11-27 15 views
0

スパースIDを持つエンティティの2つのソートされたストリームが指定されています。プロジェクトアーマターを使用して2つのソートされたスパースシーケンスを左外部結合します。

Flux<Long> stream1 = Flux.fromArray(new Long[] {1L, 3L, 4L, 5L, 6L}); 
Flux<Long> stream2 = Flux.fromIterable(List.of(1L, 2L, 3L, 4L, 6L, 7L)); 

SQLの中でFULL OUTER JOINと呼ばれるものを実行するパイプラインを構成する関数を実装します。最後に次のコードを呼び出すように:

public static Flux<Map.Entry<Long, Long>> fullOuterJoin(Flux<Long> stream1, Flux<Long> stream2) { 
} 
fullOuterJoin(stream1, stream2).log().subscribe(); 

は、次のような結果を生成します:.join()を使用することができれば分からないのです

onSubscribe(...) 
request(...) 
onNext(1=1) 
onNext(null=2) 
onNext(3=3) 
onNext(4=4) 
onNext(5=null) 
onNext(6=6) 
onNext(null=7) 
onComplete() 

を、)(.zipファイルみましたIDでそれらをマップせず、シーケンスの最初の要素がなくなったときに停止します。私は.bufferUntil()を使うことができますが、いくつかの他のオプションを探しています。効率的に実装する方法のアイディアは大歓迎です。

答えて

0

これは、RSでヌルが許可されておらず、「疎シーケンス」の概念がないため、リアクティブストリームにはあまり適していません。 RSにSQL /集合論の概念を靴べらしようとすると、保証成功:(RxJavaで答えが

ありませんが、それは我々がまだ炉ではありません拡張子からオペレータが必要です:

関連する問題