Fork me on GitHub

RxJava2(4)

过滤操作符

filter()

作用

按照一定的逻辑筛选被观察者发送的事件

使用

1
2
3
4
5
6
7
8
9
10
11
12
    Observable.just(1,2,3,4,5,6)
.filter(new Predicate<Integer>() {
@Override
public boolean test(Integer integer) throws Exception {
return integer > 3;
}
}).subscribe(new Consumer<Integer>() {
@Override
public void accept(Integer integer) throws Exception {
Log.i(TAG, "accept: " + integer);
}
});

输出结果

1
2
3
06-26 10:50:00.860 21641-21641/com.example.bibingwei.androiddemo I/------: accept: 4
accept: 5
accept: 6

ofType()

与上面类似

skip()&skipLast()

作用

正序或逆序跳过事件

使用

1
2
3
4
5
6
7
8
Observable.just(1,2,3,4,5,6)
.skip(3)
.subscribe(new Consumer<Integer>() {
@Override
public void accept(Integer integer) throws Exception {
Log.i(TAG, "accept: " + integer);
}
});

输出结果

1
2
3
06-26 10:56:17.370 22041-22041/com.example.bibingwei.androiddemo I/------: accept: 4
accept: 5
accept: 6

distinct() & distinctUntilChanged()

作用

过滤掉重复或连续重复的事件

使用

1
2
3
4
5
6
7
8
Observable.just(1,2,3,4,1,2,5,4,6,3)
.distinct()
.subscribe(new Consumer<Integer>() {
@Override
public void accept(Integer integer) throws Exception {
Log.i(TAG, "accept: " + integer);
}
});

输出结果

1
2
3
4
5
6
06-26 11:02:44.150 22289-22289/com.example.bibingwei.androiddemo I/------: accept: 1
accept: 2
accept: 3
accept: 4
accept: 5
accept: 6

first() & last()

作用

作用,看图很明显了吧

使用

1
2
3
4
5
6
7
8
9
10
// @param defaultItem
// the default item to emit if the source ObservableSource doesn't emit anything
Observable.just(1,2,3,4)
.first(2)
.subscribe(new Consumer<Integer>() {
@Override
public void accept(Integer integer) throws Exception {
Log.i(TAG, "accept: " + integer);
}
});

输出结果

1
06-26 11:07:58.410 22450-22450/com.example.bibingwei.androiddemo I/------: accept: 1

总结

这几篇文章只能当做工具书的功能,随时查阅一下,没有每个操作符都列举出来,如果想知道还是去官网查阅。