RxJava的學習之變換操作符—map

定義:Map操作符對原始Observable發射的每一項數據應用一個你選擇的函數,然後返回一個發射這些結果的Observable。
基本格式:map(Func1)
map函數只有一個參數,參數一般是Func1,它的兩個類型參數,一個是輸入的類型,一個是輸出的類型。

對Observable發射的每一項數據應用一個函數,執行變換操作。

官方流程圖:
這裏寫圖片描述

代碼示例:
map的基本用法:

    Person p1 = new Person("tom");
    Person p2 = new Person("jack");
    Person p3 = new Person("jan");

    Observable.just(p1, p2, p3).map(new Func1<Person, String>() {
      @Override public String call(Person p) {
        return p.getName();
      }
    }).subscribe(new Action1<String>() {
      @Override public void call(String name) {
        System.out.println("輸出結果:" + name);
      }
    });

再舉個例子

 Observable.just(p1, p2, p3).map(new Func1<Person, List<Cat>>() {
      @Override public List<Cat> call(Person p) {
        return p.getCats();
      }
    }).subscribe(new Action1<List<Cat>>() {
      @Override public void call(List<Cat> cats) {
        for (Cat cat : cats)
          System.out.println("輸出結果:" + cat.getName());
      }
    });
  }

從上面的示例可以看出map在處理List的時候使用for循環,對於響應式編程來說是冗繁而且缺乏規範的,再者就是List數據源是有厚度的,我們需要用某種方法把這種厚度給抹平,把原本一個整體彈出的數據源想辦法轉換爲單個獨立彈出的數據,所以纔有了flat——扁平化的map,可以讓程序更加的簡潔和整體的邏輯性更強,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章