2017-11-27 19 views
0

스파 스 ID가있는 엔티티의 두 정렬 된 스트림이 주어집니다.프로젝트 - 리액터를 사용하여 왼쪽 외부 조인 두 개의 정렬 된 스파 스 시퀀스

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로 맵핑하지 않고 시퀀스의 첫 x 째 엘리먼트가 부족하면 정지합니다. 나도 알아 .bufferUntil() 사용할 수 있지만 일부 다른 옵션을 찾고, 선호하는 일부 기본 지원이 누락되었습니다. 효율적으로 구현하는 방법에 대한 아이디어는 언제나 환영합니다.

답변