RxJava的操作符

Posted 周杰伦本人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RxJava的操作符相关的知识,希望对你有一定的参考价值。

@[TOC]

RxJava的操作符

创建型操作符

interval操作符是按照时间间隔来进行输出

Observable.interval(10, TimeUnit.MILLISECONDS)
                .subscribe(aLong -> log.info(aLong.toString()));

这段代码每隔10毫秒输出一次

defer操作符是延迟创建,当有观察者订阅的时候才会输出消息

Observable observable = Observable.just(foo.get());

Observable dObservable = Observable.defer(() -> Observable.just(foo.get()));

just操作符用来创建一个主题,并将参数弹出。

Observable.just("hello world" )
                .subscribe(s -> log.info("just string->" + s));

from操作符是以数组作为输入,创建主题对象,并将数组的元素一个一个输出


        String[] items = "b", "c", "d", "e";
        Observable.from(items)
                .subscribe(s -> log.info("just string->" + s));

range是整数范围作为输入,包括的区间的上限和下限

bservable.range(1, 8)
                .subscribe(i -> log.info("just int->" + i));

这行代码会输出1到8的所有整数

转换操作符

map操作符是转换的方法,接元素进行转换后弹出

这段代码是将所有元素乘以4之后输出

Observable.range(1, 4)
                .map(i -> i *i)
                .subscribe(i -> log.info(i.toString())); 

scan操作符是将每个数据累积,它会将上一个项的数据累积作为下一项的输入数据。

flatMap操作符是将元素变成一个新的主题后输出

Observable.range(1, 4)
                .flatMap(i -> Observable.range(1, i).toList())
                .subscribe(list -> log.info(list.toString()));

这段代码输出结果为四个数组

过滤型操作符

过滤型操作符顾名思义就是对结果进行过滤

Filter操作符

这段代码输出的是能被5整除的数

   Observable.range(1, 20)
                .filter(integer -> integer%5==0)
                .subscribe(i -> log.info("filter int->" + i));         

distinct是对消息重复数据过滤,已经发出去的元素不再发出

Observable.just("apple", "pair", "banana", "apple", "pair")
                .distinct()  //使用distinct过滤重复元素
                .subscribe(s -> log.info("distinct s->" + s));

输出结果为apple pair 和banana

总结

RxJava的操作符有创建型操作符、转换操作符和过滤型操作符,然后分别对具体的方法进行了介绍,除此之外还有别的运算符,我们在下一篇文章中再介绍。

以上是关于RxJava的操作符的主要内容,如果未能解决你的问题,请参考以下文章

Spark SQL为JDBC查询生成错误的上限和下限

具有上限/下限的 Numpy 自定义 Cumsum 函数?

java泛型上限下限,通配符

java泛型上限下限,通配符

如何在R中找到函数的上限和下限

期权价格的上限和下限