2016-03-13 74 views
5

可以说我有两个可观察数据流RxJava通过匹配属性值

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

我如何加入这些时,他们有一个相匹配的属性加入观察到的数据流?类似下面的代码psudo:

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

回答

3

一个这样做的方式:

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