Rxjava基本使用--过滤型操作符

Rxjava基本使用–过滤型操作符

filter

true为全部都发射给下游 false为全部不发射给下游

Observable.just("三鹿","合生元","哈哈")
                .filter(object : Predicate<String>{
                    override fun test(t: String): Boolean {
                        //true为全部不过滤 false为全部过滤掉
//                        return true 
                        if ("三鹿".equals(t)){
                            //将 三鹿 过滤掉
                            return false
                        }
                        return true
                    }

                })
                .subscribe(object : Observer<String>{
                    override fun onComplete() {
                    }

                    override fun onSubscribe(d: Disposable) {
                    }

                    override fun onNext(t: String) {
                    }

                    override fun onError(e: Throwable) {
                    }
                })

take

只有在有定时器运行的基础上,加入take过滤操作符

//上游 时间计时 每2秒执行一次
        Observable.interval(2,TimeUnit.SECONDS)
                //执行到第8次后停止 。。 不加take会无限执行下去
                .take(8)
                .subscribe(object : Consumer<Long>{
                    override fun accept(t: Long?) {
                        Log.e("Take=","cishu=$t")
                    }
                })

distinct

过滤重复事件

Observable.create(object : ObservableOnSubscribe<Int> {
            override fun subscribe(emitter: ObservableEmitter<Int>) {
                emitter.onNext(1)
                emitter.onNext(2)
                emitter.onNext(3)
                emitter.onNext(4)
                emitter.onNext(3)
                emitter.onNext(1)
                emitter.onNext(2)
            }
        }).distinct()
                .subscribe(object : Consumer<Int>{
                    override fun accept(t: Int?) {
                        Log.e("distinct","value=$t")
                    }

                })

elementAt

指定发射事件的内容,如果无法指定,可以设定默认的事件

Observable.create(object : ObservableOnSubscribe<String>{
            override fun subscribe(emitter: ObservableEmitter<String>) {
                emitter.onNext("11111")
                emitter.onNext("2222")
                emitter.onNext("33333")
            }

        })
                .elementAt(1,"默认值-111")
                .subscribe(object : Consumer<String>{
                    override fun accept(t: String?) {
                        Log.e("elementAt","shuju=$t")
                    }

                })
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值