Rxjava(3) 过滤操作

2019-08-01  本文已影响0人  其勇勇
Skip(2) 忽略前两条数据进行发送数据
SkipLast(2) 忽略最后两条数据进行发送数据
Take(2) 只发送前两条数据
TakeLast(2) 只发送最后两条数据


private void first_last(){
        //只发射第一项(或者满足某个条件的第一项)数据
        Observable.fromIterable(mData).first("pp").subscribe(new Consumer<String>() {
            @Override
            public void accept(String s) throws Exception {
                Log.e("qwer",s);
            }
        });

        //只发射最后一项(或者满足某个条件的最后一项)数据
        Observable.fromIterable(mData).last("pp").subscribe(new Consumer<String>() {
            @Override
            public void accept(String s) throws Exception {
                Log.e("qwer",s);
            }
        });
    }

    private void filter(){
        //根据条件过滤
        Observable.fromIterable(mData).filter(new Predicate<String>() {
            @Override
            public boolean test(String s) throws Exception {
                return Integer.valueOf(s) > 4;
            }
        }).subscribe(new Consumer<String>() {
            @Override
            public void accept(String s) throws Exception {

            }
        });
    }

    private void elementAt(){
        //发送指定位置的数据
        Observable.fromIterable(mData).elementAt(2).subscribe(new Consumer<String>() {
            @Override
            public void accept(String s) throws Exception {
                Log.e("qwer",s);
            }
        });
        //发送指定位置的数据,位置不存在,就发送默认的数据
        Observable.fromIterable(mData).elementAt(8,"king").subscribe(new Consumer<String>() {
            @Override
            public void accept(String s) throws Exception {
                Log.e("qwer",s);
            }
        });
    }

    @SuppressLint("CheckResult")
    private void distinct(){
        /*
         * 去重,重复的数据将不做处理
         */
        Observable.fromIterable(mData).distinct().subscribe(new Consumer<String>() {
            @Override
            public void accept(String s) throws Exception {
                Log.e("qwer",s);
            }
        });
    }
上一篇 下一篇

猜你喜欢

热点阅读