RxJava3.x入门(四)——过滤操作符
一、根据指定事件条件过滤事件
1.filter()
- 作用:通过一定逻辑来过滤被观察者发送的事件,如果返回true则发送事件,否则不会发送
代码演示:
Observable
.just(1,2,3,4,5)
.filter(new Predicate<Integer>() {
@Override
public boolean test(Integer integer) throws Throwable {
return integer % 3 == 2;
}
})
.subscribe(new Observer<Integer>() {
@Override
public void onSubscribe(Disposable d) {
Log.d(TAG, "onSubscribe: "+d);
}
@Override
public void onNext(Integer integer) {
Log.d(TAG, "onNext: "+integer);
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "onError: "+e);
}
@Override
public void onComplete() {
Log.d(TAG, "onComplete");
}
});
代码运行结果:
2.ofType()
- ofType是filter操作符的一个特殊形式。它过滤一个Observable只返回指定类型的数据。
代码演示:
Observable
.just(1,2,3,4,5,"Hello,World!")
.ofType(Integer.class)
.subscribe(new Observer<Integer>() {
@Override
public void onSubscribe(Disposable d) {
Log.d(TAG, "onSubscribe: "+d);
}
@Override
public void onNext(Integer integer) {
Log.d(TAG, "onNext: "+integer);
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "onError: "+e);
}
@Override
public void onComplete() {
Log.d(TAG, "onComplete");
}
});
代码运行结果:
3.skip() & skipLast()
- skip()作用:忽略Observable’发射的前N项数据,只保留之后的数据。
- skipLast()作用:从结尾往前数跳过制定数量的事件
代码演示:
Observable
.just(1,2,3,4,5)
.skip(2)
.subscribe(new Observer<Integer>() {
@Override
public void onSubscribe(Disposable d) {
Log.d(TAG, "onSubscribe: "+d);
}
@Override
public void onNext(Integer integer) {
Log.d(TAG, "onNext: "+integer);
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "onError: "+e);
}
@Override
public void onComplete() {
Log.d(TAG, "onComplete");
}
});
Observable
.just(1,2,3,4,5)
.skipLast(2)
.subscribe