当我们连续两个可观察的重复项目将在输出流中被删除?

时间:2017-04-18 14:42:04

标签: java rx-java observable concat

在RxJava中当我们连接两个observable时,它会消除列表中的重复项。

示例:

Platform.OS

1 个答案:

答案 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);
}