RxJava attaches observable threads by matching attribute value

Suppose I have two observed streams

Observable<Book> books; Observable<Movie> movies; 

How can I join them when they have an attribute that matches? Something like psudo below:

 Observable<BookMoviePair> pairs = books.join(movies) .where((book, movie) -> book.getId() == movie.getId())) .return((book, movie) -> new BookMoviePair(book, movie)); 
+5
source share
1 answer

One way to do this:

 Observable<BookMoviePair> pairs = books.flatMap(book -> movies .first(movie -> movie.getId() == book.getId()) .map(movie -> new BookMoviePair(book, movie))); 
+3
source

Source: https://habr.com/ru/post/1244962/


All Articles