、map和flatMap都是接受一個函數做爲參數(Func1)
二、map函數只有一個參數,參數通常是Func1,Func1的<I,O>I,O模版分別爲輸入和輸出值的類型,實現Func1的call方法對I類型進行處理後返回O類型數據java
三、flatMap函數也只有一個參數,也是Func1,Func1的<I,O>I,O模版分別爲輸入和輸出值的類型,實現Func1的call方法對I類型進行處理後返回O類型數據,不過這裏O爲Observable類型app
map實例 ide
這裏map裏面直接對參數處理函數
flatMap實例:url
這裏用 Observable.just(s)在裏面對參數進行處理並返回一個Observable,spa
上面兩個例子效果是同樣的,注意的就是參數,返回值不同,咱們再來看幾個:.net
這裏在map裏面返回了一個Observable,注意subscribe的參數也要變成了Observable<String>,不然會有異常<這麼寫主要是當時不太明白map和flatMap的區別,想看一下到底有什麼區別>3d
Map通常用於對原始的參數進行加工處理,返回值仍是基本的類型,能夠在subscribe中使用(適用)的類型。blog
flatMap通常用於輸出一個Observable,而其隨後的subscribe中的參數也跟Observable中的參數同樣,注意不是Observable,通常用於對原始數據返回一個Observable,這個Observable中數據類型能夠是原來的,也能夠是其餘的ip
[java] view plain copy
這裏對原始的List在flatMap裏面返回相應的一個個的Observable<String>以便在subscribe中直接使用一個個的URL,具體參考:http://blog.csdn.net/lzyzsd/article/details/44094895
這裏結合了retrofit 在flatMap中經過一個城市的str,返回一個Observable,這個Observable的參數是一些獲取到的天氣信息結構WeatherData,這樣在後面subscrib中就能夠對其進行處理了。