RxJava通过匹配属性值来连接可观察流

The*_*dor 6 java reactive-programming rx-java

可以说我有两个可观察的流

Observable<Book> books;
Observable<Movie> movies;
Run Code Online (Sandbox Code Playgroud)

如果它们具有匹配的属性,我如何加入这些?像下面的psudo代码:

Observable<BookMoviePair> pairs = books.join(movies)
    .where((book, movie) -> book.getId() == movie.getId()))
    .return((book, movie) -> new BookMoviePair(book, movie));
Run Code Online (Sandbox Code Playgroud)

Ego*_*uba 4

一种方法是:

Observable<BookMoviePair> pairs =
        books.flatMap(book -> movies
                .first(movie -> movie.getId() == book.getId())
                .map(movie -> new BookMoviePair(book, movie)));
Run Code Online (Sandbox Code Playgroud)