1.filter操作符 如果是false就全部发射给下游 如果是true 全部都不发射给下游
public void r01(View view) {
//上游
Observable.just("三鹿","合生元","飞鹤")
//过滤操作符
.filter(new Predicate<String>() {
@Override
public boolean test(String s) throws Throwable {
//return true; //不去过滤默认全部都会打印
//return false; //不去过滤默认全部都不会打印
if ("三鹿".equals(s)) {
return false;
}
return true;
}
})
//订阅
.subscribe(new Consumer<String>() { //下游
@Override
public void accept(String s) throws Throwable {
Log.e(TAG, "accept: " + s );
}
});
}
2.take操作符 定时器 运行 只有在定时器运行的基础上 加入take过滤操作符,才有take操作符的价值
public void r02(View view) {
//定时器 运行 只有在定时器运行的基础上 加入take过滤操作符,才有take操作符的价值
//上游
Observable.interval(2, TimeUnit.SECONDS) //2秒执行一次
.take(8) //执行8次 停止下来
.subscribe(new Consumer<Long>() {
@Override
public void accept(Long aLong) throws Throwable {
Log.e(TAG, "accept: " + aLong );
}
});
}
3.distinct操作符 过滤重复 发射的事件
public void r03(View view) {
//上游
Observable.create(new ObservableOnSubscribe<Integer>() {
@Override
public void subscribe(@NonNull ObservableEmitter<Integer> e) throws Throwable {
e.onNext(1);
e.onNext(1);
e.onNext(2);
e.onNext(3);
e.onNext(4);
e.onNext(5);
e.onNext(2);
e.onComplete();
}
})
.distinct() //过滤重复 发射的事件
.subscribe(new Consumer<Integer>() {
@Override
public void accept(Integer integer) throws Throwable {
Log.e(TAG, "accept: " + integer);
}
});
}
4.elementAt 指定发射事件内容 如果无法指定 有默认事件
public void r04(View view) {
Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(@NonNull ObservableEmitter<String> e) throws Throwable {
e.onNext("你好");
e.onNext("你好");
e.onNext("hello");
e.onNext("hei");
e.onComplete();
}
})
.elementAt(2,"默认") //指定下标输出
.subscribe(new Consumer<String>() {
@Override
public void accept(String s) throws Throwable {
Log.e(TAG, "accept: " + s );
}
});
}