RxJava 操作符之 -- 算数操作符

本贴最后更新于 2793 天前,其中的信息可能已经时移世易

Average

计算原始 Observable 发射数字的平均值并发射它: 它属于不同的 rxjava-math 模块

collect

Collect 操作符类似于 Reduce,但是其目的不同,collect 用来将源 Observable 发射的数据给收集到一个数据结构里面,需要使用两个参数:

  1. 一个产生收集数据结构的函数。
  2. 一个接收第一个函数产生的数据结构和源 Observable 发射的数据作为参数的函数。
List<Integer> list=new ArrayList<>();
		list.add(1);
		list.add(1);
		list.add(1);
		list.add(1);
		list.add(1);
		Observable.from(list).collect(() -> new ArrayList<>(), new Action2<List<Integer>, Integer>() {

			@Override
			public void call(List<Integer> t1, Integer t2) {
				t1.add(t2);

			}
		}).subscribe(new Action1<List<Integer>>() {

			@Override
			public void call(List<Integer> t) {
				System.out.println(t.toString());

			}


		});

结果

[1, 1, 1, 1, 1]

Concat

不交错的发射两个或多个 Observable 的发射物

Observable<Integer> obser1 = Observable.just(1, 2, 3);
        Observable<Integer> obser2 = Observable.just(4, 5, 6);
        Observable<Integer> obser3 = Observable.just(7, 8, 9);
        Observable.concat(obser1,obser2,obser3).subscribe(new Action1<Integer>() {

			@Override
			public void call(Integer t) {
				System.out.println(t);
			}
		});

结果

1
2
3
4
5
6
7
8
9

Count

Max

Min

Sum

Reduce

按顺序对 Observable 发射的每项数据应用一个函数并发射最终的值

Observable.just(1,2,3,9).reduce(new Func2<Integer, Integer, Integer>() {

    @Override
    public Integer call(Integer t1, Integer t2) {
      // TODO Auto-generated method stub
      return t1+t2;
    }
  }).subscribe(new Action1<Integer>() {

    @Override
    public void call(Integer t) {
      System.out.println(t);

    }
  });

结果

15
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3187 引用 • 8213 回帖
  • observable
    1 引用

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...