您好,欢迎访问一九零五行业门户网

RxJava操作符(八)Aggregate_PHP教程

rxjava操作符(八)aggregate在这篇文章里我们来了解一下rxjava的聚合操作符。
一、contact
contact操作符将多个observable结合成一个observable并发射数据,并且严格按照先后顺序发射数据,前一个observable的数据没有发射完,是不能发射后面observable的数据的。
有两个操作符跟它类似,但是有区别,分别是
1.startwith:仅仅是在前面插上一个数据。
2.merge:其发射的数据是无序的。
二、count
count操作符用来统计源observable发射了多少个数据,最后将数目给发射出来;如果源observable发射错误,则会将错误直接报出来;在源observable没有终止前,count是不会发射统计数据的。
下面使用contact和count操作符来结合多个observable和统计发射数据的数目
private observable contactobserver() {
observable obser1 = observable.just(1, 2, 3);
observable obser2 = observable.just(4, 5, 6);
observable obser3 = observable.just(7, 8, 9);
return observable.concat(obser1, obser2, obser3);
}
private observable conuntobserver() {
return observable.just(1, 2, 3).count();
}
分别进行订阅
mlbutton.settext(contact);
mlbutton.setonclicklistener(e -> contactobserver().subscribe(i -> log(contact: + i)));
mrbutton.settext(conunt);
mrbutton.setonclicklistener(e -> conuntobserver().subscribe(i -> log(conunt: + i)));
运行结果如下
三、reduce、collect
reduce操作符应用一个函数接收observable发射的数据和函数的计算结果作为下次计算的参数,输出最后的结果。跟前面我们了解过的scan操作符很类似,只是scan会输出每次计算的结果,而reduce只会输出最后的结果。
collect操作符类似于reduce,但是其目的不同,collect用来将源observable发射的数据给收集到一个数据结构里面,需要使用两个参数:
1.一个产生收集数据结构的函数。
2.一个接收第一个函数产生的数据结构和源observable发射的数据作为参数的函数。
下面我们来使用一下reduce和collect操作符。同当初scan的例子一样,我们使用一个装了10个数字2的list创建源observable。
private observable reduceobserver() {
return observable.from(list).reduce((x, y) -> x * y);
}
private observable collectobserver() {
return observable.from(list).collect(() -> new arraylist(), (integers, integer) -> integers.add(integer));
}
分别进行订阅
mlbutton.settext(reduce);
mlbutton.setonclicklistener(e -> reduceobserver().subscribe(i -> log(reduce: + i)));
mrbutton.settext(collect);
mrbutton.setonclicklistener(e -> collectobserver().subscribe(i -> log(collect: + i)));
运行结果如下
聚合操作符比较少,就到这里了,本文中的源代码见https://github.com/chaoba/rxjavademo
http://www.bkjia.com/phpjc/1077805.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/1077805.htmltecharticlerxjava操作符(八)aggregate 在这篇文章里我们来了解一下rxjava的聚合操作符。 一、contact contact操作符将多个observable结合成一个observable并发射...
其它类似信息

推荐信息