在FilterActivity里面
2.讲解 1.filter过滤,false的表示过滤掉,true的表示保留
在 这 “三鹿”, “合生元”, “飞鸽” 三个中,三鹿保留,其他两个都过滤掉,既只打印“三鹿”。
//上游 Observable.just("三鹿", "合生元", "飞鸽") //订阅 .filter(new Predicate2.take() { @Override public boolean test(String s) throws Throwable {//这里执行了三次,true表示打印,false表示不打印 Log.d(TAG, "test: 多少次"); // return true;//不过滤,默认全部打印 if (s.equals("三鹿")) { return true; } else { return false; } } }) //订阅 .subscribe(new Consumer () { @Override public void accept(String s) throws Throwable { Log.d(TAG, "accept: " + s); } });
可以限制打印多少个,下面的只打印8个(本来无限打印)
//定时器运行,只有在定时器运行的基础上,加入take过滤 *** 作符,才有take过滤 *** 作符的价值 //上游 Observable.interval(1, TimeUnit.SECONDS)//表示间隔一秒,打印一次。前面一个表示值,这里是1,后面表示单位,这里是秒 .take(8) //下游 .subscribe(new Consumer3.distinct() { @Override public void accept(Long aLong) throws Throwable { Log.d(TAG, "accept: "+aLong); } });
表示去重
本来打印全部,现在去掉重复的,然后打印
//上游 Observable.create(new ObservableOnSubscribe() { @Override public void subscribe(@NonNull ObservableEmitter emitter) throws Throwable { emitter.onNext(1); emitter.onNext(1); emitter.onNext(2); emitter.onNext(1); emitter.onNext(3); emitter.onNext(5); emitter.onNext(4); emitter.onComplete(); } }) //中间 *** 作 .distinct() //下游 .subscribe(new Consumer () { @Override public void accept(Integer integer) throws Throwable { Log.d(TAG, "accept: "+integer); } });
打印结果为:1,2,3,5,4
4.elementAt指定位置打印。下面打印的是葵花宝典2。0表示打印第一个,2表示打印第三个
//上游 Observable.create(new ObservableOnSubscribe() { @Override public void subscribe(@NonNull ObservableEmitter emitter) throws Throwable { emitter.onNext("九阴真经"); emitter.onNext("葵花宝典"); emitter.onNext("葵花宝典2"); emitter.onNext("乾坤大罗伊"); emitter.onNext("独孤九剑"); emitter.onComplete();//完成标识 } }) //中间 *** 作 .elementAt(2,"默认典")//指定哪个保留 //下游 .subscribe(new Consumer () { @Override public void accept(String s) throws Throwable { Log.d(TAG, "accept: "+s); } });
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)