很多內容源自: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也將停在發射數據(一對一匹配)。