RxJava Operator (8) Aggregate_PHP Tutorial
RxJava Operator (8) Aggregate
In this article we will take a look at Rxjava’s aggregation operator.1. Contact
The Contact operator combines multiple Observables into one Observable and emits data, and emits data in strict order. If the data of the previous Observable has not been emitted, the subsequent Observable cannot be emitted. Data.
There are two operators similar to it, but there are differences, namely
1. startWith: just insert a data in front.
2.merge: The data emitted is unordered.

2. Count
The Count operator is used to count how many data the source Observable has emitted, and finally emit the number; if the source Observable emits an error, the error will be reported directly; Count will not emit statistical data until the source Observable is terminated.
Use the Contact and Count operators below to combine multiple Observables and count the number of emitted data
<ol style="margin:0 1px 0 0px;padding-left:40px;" start="1" class="dp-css"><li>private Observable<Integer> contactObserver() {<br /></li><li>Observable<Integer> obser1 = Observable.just(1, 2, 3);<br /></li><li>Observable<Integer> obser2 = Observable.just(4, 5, 6);<br /></li><li>Observable<Integer> obser3 = Observable.just(7, 8, 9);<br /></li><li>return Observable.concat(obser1, obser2, obser3);<br /></li><li>}<br /></li><li>private Observable<Integer> conuntObserver() {<br /></li><li>return Observable.just(1, 2, 3).count();<br /></li><li>}</li></ol>
<ol style="margin:0 1px 0 0px;padding-left:40px;" start="1" class="dp-css"><li>mLButton.setText("contact");<br /></li><li>mLButton.setOnClickListener(e -> contactObserver().subscribe(i -> log("contact:" + i)));<br /></li><li>mRButton.setText("conunt");<br /></li><li>mRButton.setOnClickListener(e -> conuntObserver().subscribe(i -> log("conunt:" + i)));</li></ol>

3. Reduce, Collect
The Reduce operator applies a function to receive the data emitted by the Observable and the calculation result of the function as the next calculation parameters and output the final result. It is very similar to the scan operator we learned earlier, except that scan will output the result of each calculation, while reduce will only output the final result.
The Collect operator is similar to Reduce, but its purpose is different. collect is used to collect the data emitted by the source Observable into a data structure. It requires two parameters:
1. A function that generates the collection data structure .
2. A function that receives the data structure generated by the first function and the data emitted by the source Observable as parameters.


Let’s use the reduce and collect operators. As in the original scan example, we create the source Observable using a list of 10 numbers 2.
<ol style="margin:0 1px 0 0px;padding-left:40px;" start="1" class="dp-css"><li>private Observable<Integer> reduceObserver() {<br /></li><li>return Observable.from(list).reduce((x, y) -> x * y);<br /></li><li>}<br /></li><li>private Observable<ArrayList<Integer>> collectObserver() {<br /></li><li>return Observable.from(list).collect(() -> new ArrayList<>(), (integers, integer) -> integers.add(integer));<br /></li><li>}</li></ol>
<ol style="margin:0 1px 0 0px;padding-left:40px;" start="1" class="dp-css"><li>mLButton.setText("reduce");<br /></li><li>mLButton.setOnClickListener(e -> reduceObserver().subscribe(i -> log("reduce:" + i)));<br /></li><li>mRButton.setText("collect");<br /></li><li>mRButton.setOnClickListener(e -> collectObserver().subscribe(i -> log("collect:" + i)));</li></ol>

Aggregation operation There are relatively few symbols, so that’s it. The source code in this article can be found at https://github.com/Chaoba/RxJavaDemo

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



In recent days, Ice Universe has been steadily revealing details about the Galaxy S25 Ultra, which is widely believed to be Samsung's next flagship smartphone. Among other things, the leaker claimed that Samsung only plans to bring one camera upgrade

OnLeaks has now partnered with Android Headlines to provide a first look at the Galaxy S25 Ultra, a few days after a failed attempt to generate upwards of $4,000 from his X (formerly Twitter) followers. For context, the render images embedded below h

Alongside announcing two new smartphones, TCL has also announced a new Android tablet called the NXTPAPER 14, and its massive screen size is one of its selling points. The NXTPAPER 14 features version 3.0 of TCL's signature brand of matte LCD panels

In recent days, Ice Universe has been steadily revealing details about the Galaxy S25 Ultra, which is widely believed to be Samsung's next flagship smartphone. Among other things, the leaker claimed that Samsung only plans to bring one camera upgrade

The Vivo Y300 Pro just got fully revealed, and it's one of the slimmest mid-range Android phones with a large battery. To be exact, the smartphone is only 7.69 mm thick but features a 6,500 mAh battery. This is the same capacity as the recently launc

Samsung has not offered any hints yet about when it will update its Fan Edition (FE) smartphone series. As it stands, the Galaxy S23 FE remains the company's most recent edition, having been presented at the start of October 2023. However, plenty of

The Redmi Note 14 Pro Plus is now official as a direct successor to last year'sRedmi Note 13 Pro Plus(curr. $375 on Amazon). As expected, the Redmi Note 14 Pro Plus heads up the Redmi Note 14 series alongside theRedmi Note 14and Redmi Note 14 Pro. Li

OnePlus'sister brand iQOO has a 2023-4 product cycle that might be nearlyover; nevertheless, the brand has declared that it is not done with itsZ9series just yet. Its final, and possibly highest-end,Turbo+variant has just beenannouncedas predicted. T
