ホームページ >バックエンド開発 >PHPチュートリアル >RxJava オペレーター (8) Aggregate_PHP チュートリアル

RxJava オペレーター (8) Aggregate_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-12 09:03:541160ブラウズ

RxJava演算子(8)集計

この記事では、Rxjavaの集計演算子を見てみましょう。

1. Contact
Contact オペレーターは、複数の Observable を 1 つの Observable に結合してデータを発行し、厳密な順序でデータを発行します。前の Observable のデータが発行され、次の Observable のデータが発行されるまで、前の Observable のデータは発行できません。以下の Observable は発行できません。
似た演算子が 2 つありますが、違いがあります。
1. startWith: 前にデータを挿入するだけです。
2.merge: 出力されるデータには順序がありません。

2. Count
Count 演算子は、ソース Observable が発行したデータの数をカウントするために使用され、最終的にソース Observable がエラーを発行した場合、そのエラーはソース Observable が終了する前に直接報告されます。 , count 統計は出力されません。

次に、Contact 演算子と Count 演算子を使用して複数の Observable を結合し、放出されたデータの数をカウントします

<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
Reduceオペレーターアプリケーション 関数は、Observable が発行したデータと関数の計算結果を次の計算のパラメーターとして受け取り、最終結果を出力します。これは、以前に学習した scan 演算子とよく似ていますが、scan は各計算の結果を出力するのに対し、reduce は最終結果のみを出力する点が異なります。
Collect オペレーターは Reduce に似ていますが、その目的は異なります。collect は、ソース Observable によって出力されたデータをデータ構造に収集するために使用されます。
1. 収集されたデータ構造を生成する関数。
2. 最初の関数によって生成されたデータ構造と、ソース Observable によって発行されたデータをパラメーターとして受け取る関数。


Reduce 演算子と Collect 演算子を使用してみましょう。元のスキャン例と同様に、10 個の数値のリストを使用してソース Observable を作成します 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>
実行結果は以下の通りです


集計演算子は比較的少ないので、この記事のソースコードはhttps://github.comにあります。 /Chaova/RxJavaDemo

www.bkjia.com本当http://www.bkjia.com/PHPjc/1077805.html技術記事 RxJava 演算子 (8) 集計 今回は、RxJava の集計演算子について見てみましょう。 1. Contact Contact オペレーターは複数の Observable を 1 つの Observable に結合し、次のメッセージを出力します...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。