目次
RxJava操作符(八)Aggregate
ホームページ php教程 php手册 RxJava操作符(八)Aggregate

RxJava操作符(八)Aggregate

Jun 13, 2016 am 08:50 AM
android

RxJava操作符(八)Aggregate

在这篇文章里我们来了解一下Rxjava的聚合操作符。

一、Contact
Contact操作符将多个Observable结合成一个Observable并发射数据,并且严格按照先后顺序发射数据,前一个Observable的数据没有发射完,是不能发射后面Observable的数据的。
有两个操作符跟它类似,但是有区别,分别是
1.startWith:仅仅是在前面插上一个数据。
2.merge:其发射的数据是无序的。

二、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>
ログイン後にコピー
运行结果如下


三、Reduce、Collect
Reduce操作符应用一个函数接收Observable发射的数据和函数的计算结果作为下次计算的参数,输出最后的结果。跟前面我们了解过的scan操作符很类似,只是scan会输出每次计算的结果,而reduce只会输出最后的结果。
Collect操作符类似于Reduce,但是其目的不同,collect用来将源Observable发射的数据给收集到一个数据结构里面,需要使用两个参数:
1.一个产生收集数据结构的函数。
2.一个接收第一个函数产生的数据结构和源Observable发射的数据作为参数的函数。


下面我们来使用一下reduce和collect操作符。同当初scan的例子一样,我们使用一个装了10个数字2的list创建源Observable。

<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/Chaoba/RxJavaDemo

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

新しいレポートは、噂のSamsung Galaxy S25、Galaxy S25 Plus、Galaxy S25 Ultraのカメラアップグレードのひどい評価を提供します 新しいレポートは、噂のSamsung Galaxy S25、Galaxy S25 Plus、Galaxy S25 Ultraのカメラアップグレードのひどい評価を提供します Sep 12, 2024 pm 12:23 PM

ここ数日、Ice Universeは、サムスンの次期主力スマートフォンであると広く信じられているGalaxy S25 Ultraの詳細を着実に明らかにしている。とりわけ、リーカーはサムスンがカメラのアップグレードを1つだけ計画していると主張した

Samsung Galaxy S25 Ultraの最初のレンダリング画像がリークされ、噂のデザイン変更が明らかに Samsung Galaxy S25 Ultraの最初のレンダリング画像がリークされ、噂のデザイン変更が明らかに Sep 11, 2024 am 06:37 AM

OnLeaks は、X (旧 Twitter) のフォロワーから 4,000 ドル以上を集めようとして失敗した数日後、Android Headlines と提携して Galaxy S25 Ultra のファーストルックを提供しました。コンテキストとして、h の下に埋め込まれたレンダリング イメージ

IFA 2024 | TCLのNXTPAPER 14は、パフォーマンスではGalaxy Tab S10 Ultraに匹敵しませんが、サイズではほぼ匹敵します IFA 2024 | TCLのNXTPAPER 14は、パフォーマンスではGalaxy Tab S10 Ultraに匹敵しませんが、サイズではほぼ匹敵します Sep 07, 2024 am 06:35 AM

TCLは、2つの新しいスマートフォンの発表に加えて、NXTPAPER 14と呼ばれる新しいAndroidタブレットも発表しました。その巨大な画面サイズはセールスポイントの1つです。 NXTPAPER 14 は、TCL の代表的なブランドであるマット LCD パネルのバージョン 3.0 を搭載しています。

Vivo Y300 Pro は、7.69 mm のスリムなボディに 6,500 mAh のバッテリーを搭載 Vivo Y300 Pro は、7.69 mm のスリムなボディに 6,500 mAh のバッテリーを搭載 Sep 07, 2024 am 06:39 AM

Vivo Y300 Pro は完全に公開されたばかりで、大容量バッテリーを備えた最もスリムなミッドレンジ Android スマートフォンの 1 つです。正確に言うと、このスマートフォンの厚さはわずか 7.69 mm ですが、6,500 mAh のバッテリーを搭載しています。これは最近発売されたものと同じ容量です

Samsung Galaxy S24 FEは、4色と2つのメモリオプションで予想よりも低価格で発売されると請求されています Samsung Galaxy S24 FEは、4色と2つのメモリオプションで予想よりも低価格で発売されると請求されています Sep 12, 2024 pm 09:21 PM

サムスンは、ファンエディション(FE)スマートフォンシリーズをいつアップデートするかについて、まだ何のヒントも提供していない。現時点では、Galaxy S23 FE は 2023 年 10 月初めに発表された同社の最新版のままです。

新しいレポートは、噂のSamsung Galaxy S25、Galaxy S25 Plus、Galaxy S25 Ultraのカメラアップグレードのひどい評価を提供します 新しいレポートは、噂のSamsung Galaxy S25、Galaxy S25 Plus、Galaxy S25 Ultraのカメラアップグレードのひどい評価を提供します Sep 12, 2024 pm 12:22 PM

ここ数日、Ice Universeは、サムスンの次期主力スマートフォンであると広く信じられているGalaxy S25 Ultraの詳細を着実に明らかにしている。とりわけ、リーカーはサムスンがカメラのアップグレードを1つだけ計画していると主張した

Xiaomi Redmi Note 14 Pro Plusは、Light Hunter 800カメラを搭載した初のQualcomm Snapdragon 7s Gen 3スマートフォンとして登場します Xiaomi Redmi Note 14 Pro Plusは、Light Hunter 800カメラを搭載した初のQualcomm Snapdragon 7s Gen 3スマートフォンとして登場します Sep 27, 2024 am 06:23 AM

Redmi Note 14 Pro Plusは、昨年のRedmi Note 13 Pro Plus(Amazonで現在375ドル)の直接の後継者として正式に発表されました。予想通り、Redmi Note 14 Pro Plusは、Redmi Note 14およびRedmi Note 14 Proと並んでRedmi Note 14シリーズをリードします。李

iQOO Z9 Turbo Plus: 強化されたシリーズフラッグシップの予約開始 iQOO Z9 Turbo Plus: 強化されたシリーズフラッグシップの予約開始 Sep 10, 2024 am 06:45 AM

OnePlus の姉妹ブランドである iQOO の製品サイクルは 2023 年から 4 年で、ほぼ終わりに近づいている可能性があります。それにもかかわらず、ブランドはまだZ9シリーズの開発を終えていないと宣言しました。その最終、そしておそらく最高エンドとなる Turbo+ バリアントが、予測どおりに発表されました。 T

See all articles