美文网首页
Rxjava操作符Operator(一)

Rxjava操作符Operator(一)

作者: 江南_烟雨 | 来源:发表于2017-05-04 20:29 被阅读0次

很多内容源自:https://www.zhihu.com/question/32209660/answer/116270166
图片例子对看:https://www.zhihu.com/question/32209660?sort=created

1.just :一个一个发射,call被多次调用。from会依次返回list的每个item,而just会直接把list返回
2.
map
: map 需要和 Funcl组合,一对一的转化。
3.flatMap:返回的是Observable对象。

    a.将传入的事件对象装换成一个Observable对象;
    b.这里不会直接发送这个Observable, 而是将这个Observable激活让它  自己开始发送事件;  
    c.每一个创建出来的Observable发送的事件,都被汇入同一个Observable,这个Observable负责将这些事件统一交给Subscriber的回调方法。

4.Scan:对一个序列的数据操作,结果会发射作为下一个数据函数的第一个参数
5.groupBy:将原始Observable发射的数据按照key来拆分成一些小的Observable,然后这些小Observable分别发射其所包含的的数据。我们需要提供一个生成key的规则(也就是Func1中的call方法),所有key相同的数据会包含在同一个小的Observable中。
'''
List<House> houses = new ArrayList<>();
houses.add(new House("中粮·海景壹号", "中粮海景壹号新出大平层!总价4500W起"));
houses.add(new House("竹园新村", "满五唯一,黄金地段"));
houses.add(new House("中粮·海景壹号", "毗邻汤臣一品"));
houses.add(new House("竹园新村", "顶层户型,两室一厅"));
houses.add(new House("中粮·海景壹号", "南北通透,豪华五房"));

    Observable<GroupedObservable<String, House>> groupedObservable = Observable.from(houses)
            .groupBy(new Func1<House, String>() {
                @Override
                public String call(House house) {
                    System.out.println("groupedObservableObservable call.house"+ house);
                    return house.getCommunityName();
                }
            });

    Observable.concat(groupedObservable )//concat:合并多个数据
            .subscribe(new Action1<House>() {
                @Override
                public void call(House house) {
                    System.out.println("小区:"+house.getCommunityName()+"; 房源描述:"+house.getDesc());
                }
            });
}

'''

groupedObservable call.houseHouse{communityName='中粮·海景壹号', desc='中粮海景壹号新出大平层!总价4500W起'}
小区:中粮·海景壹号; 房源描述:中粮海景壹号新出大平层!总价4500W起
groupedObservable call.houseHouse{communityName='竹园新村', desc='满五唯一,黄金地段'}
groupedObservable call.houseHouse{communityName='中粮·海景壹号', desc='毗邻汤臣一品'}
小区:中粮·海景壹号; 房源描述:毗邻汤臣一品
groupedObservable call.houseHouse{communityName='竹园新村', desc='顶层户型,两室一厅'}
groupedObservable call.houseHouse{communityName='中粮·海景壹号', desc='南北通透,豪华五房'}
小区:中粮·海景壹号; 房源描述:南北通透,豪华五房
小区:竹园新村; 房源描述:满五唯一,黄金地段
小区:竹园新村; 房源描述:顶层户型,两室一厅

5.Concat:(单词翻译,合并多个数据)操作符连接多个Observable的输出,就好像它们是一个Observable,第一个Observable发射的所有数据在第二个Observable发射的任何数据前面,以此类推。

6.Zip:zip(Observable, Observable, Func2)用来合并两个Observable发射的数据项,根据Func2函数生成一个新的值并发射出去。当其中一个Observable发送数据结束或者出现异常后,另一个Observable也将停在发射数据(一对一匹配)。

相关文章

网友评论

      本文标题:Rxjava操作符Operator(一)

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