很多内容源自: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也将停在发射数据(一对一匹配)。