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,可以让程序更加的简洁和整体的逻辑性更强,

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