美文网首页
RxJava2.0----布尔操作符Boolean Operat

RxJava2.0----布尔操作符Boolean Operat

作者: Calllanna | 来源:发表于2017-11-19 16:21 被阅读24次

    5.布尔操作符Boolean Operators

    Operators that evaluate one or more Observables or items emitted by Observables
    ● All
    ● AmbWith
    ● any
    ● Contains
    ● DefaultIfEmpty
    ● sequenceEqual

    ● All
    判断所有数据是否满足一定条件

    Observable.fromArray(new String[]{"aaa","abb","ac","ad"})
                    .any(new Predicate<String>() {
                        @Override
                        public boolean test(String s) throws Exception {
                            return s.contains("a");
                        }
                    }).subscribe(new Consumer<Boolean>() {
                @Override
                public void accept(Boolean aBoolean) throws Exception {
                    print("any accept:"+aBoolean);//true
                }
            });
    

    ● Amb
    获取两个事件流最先发数据的一个,Amb操作符有方法ambArray(),ambWith(),

      Observable.ambArray(
                    Observable.intervalRange(100,10,300,0, TimeUnit.MILLISECONDS),
                    Observable.intervalRange(0,10,0,0, TimeUnit.MILLISECONDS)).subscribe(
                    new Consumer<Long>() {
                        @Override
                        public void accept(Long aLong) throws Exception {
                            print("1 amb accpet :"+aLong);//0,1,2,3,4,5,6,7,8,9
                        }
                    }
            );
            Observable.intervalRange(100,10,0,0, TimeUnit.MILLISECONDS)
                    .ambWith(Observable.intervalRange(0,10,1000,0, TimeUnit.MILLISECONDS))
                    .subscribe(new Consumer<Long>() {
                        @Override
                        public void accept(Long aLong) throws Exception {
                            print( "2 amb accpet :"+aLong);//100,101,102,103,104,105,106,107,108,109
                        }
                    });
    

    ● any
    ● Contains

    判断所有数据的其中一个是否满足一定条件

        Observable.fromArray(new String[]{"aaa","abb","ac","ad"})
                    .any(new Predicate<String>() {
                        @Override
                        public boolean test(String s) throws Exception {
                            return s.contains("e");
                        }
                    }).subscribe(new Consumer<Boolean>() {
                @Override
                public void accept(Boolean aBoolean) throws Exception {
                    print("any accept:"+aBoolean);//false
                }
            });
        Observable.fromArray(new String[]{"aaa","abb","ac","ad"})
                    .contains("aaa").subscribe(new Consumer<Boolean>() {
                @Override
                public void accept(Boolean aBoolean) throws Exception {
                    print("contains accept:"+aBoolean);//true
                }
            });
    

    ● DefaultIfEmpty
    如果事件源没有数据最后,会发送默认的数据。

          Observable.fromArray(new String[]{})
                   .defaultIfEmpty("--").subscribe(new Consumer<String>() {
               @Override
               public void accept(String s) throws Exception {
                   print("defaultIfEmpty accept:"+s);//aaa,abb,ac,ad
               }
           });
    

    ● sequenceEqual
    判断两个观察源事件流是否一致

     Observable.sequenceEqual( Observable.intervalRange(100,10,0,0, TimeUnit.MILLISECONDS),
                    Observable.intervalRange(100,10,0,0, TimeUnit.MILLISECONDS)).subscribe(new Consumer<Boolean>() {
                @Override
                public void accept(Boolean aBoolean) throws Exception {
                    print("sequenceEqual accept:"+aBoolean);//true
                }
            });
    

    相关文章

      网友评论

          本文标题:RxJava2.0----布尔操作符Boolean Operat

          本文链接:https://www.haomeiwen.com/subject/fmtomxtx.html