在RxJava中当我们连接两个observable时,它会消除列表中的重复项。
示例:
Platform.OS
答案 0 :(得分:4)
不,它不会过滤重复项。请看第一次测试。
它显示重复项通过管道。
第二个测试使用distinct
运算符过滤重复项。但要小心distinct
,因为它可能会导致内存泄漏,持续时间非常长的Observable。
@Test
public void duplicates() throws Exception {
Observable<Integer> just = Observable.just(1, 2, 3);
Observable<Integer> just1 = Observable.just(2, 3, 4);
Observable.concat(just, just1).test()
.assertResult(1, 2, 3, 2, 3, 4);
}
@Test // Filters duplicates
public void duplicatesFilter() throws Exception {
Observable<Integer> just = Observable.just(1, 2, 3);
Observable<Integer> just1 = Observable.just(2, 3, 4);
Observable.concat(just, just1)
.distinct()
.test()
.assertResult(1, 2, 3, 4);
}