-
Notifications
You must be signed in to change notification settings - Fork 2
Mathematical Operators
This section explains operators that perform mathematical operations on the items emitted by Observables.
-
count( )— counts the number of items emitted by an Observable and emits this count -
sum( )— adds the Integers emitted by an Observable and emits this sum -
sumLongs( )— adds the Longs emitted by an Observable and emits this sum -
sumFloats( )— adds the Floats emitted by an Observable and emits this sum -
sumDoubles( )— adds the Floats emitted by an Observable and emits this sum -
average( )— calculates the average of Integers emitted by an Observable and emits this average -
averageLongs( )— calculates the average of Longs emitted by an Observable and emits this average -
averageFloats( )— calculates the average of Floats emitted by an Observable and emits this average -
averageDoubles( )— calculates the average of Doubles emitted by an Observable and emits this average

The count( ) method returns an Observable that emits a single item: an Integer that represents the total number of items emitted by the source Observable, as shown in the following sample code:
def myObservable = Observable.create({ anObserver ->
anObserver.onNext('Three');
anObserver.onNext('Two');
anObserver.onNext('One');
anObserver.onCompleted();
});
myObservable.count().subscribe(
[ onNext:{ myWriter.println(it); },
onCompleted:{ myWriter.println("Sequence complete"); },
onError:{ myWriter.println("Error encountered"); } ]
);3
Sequence complete

The sum( ) method returns an Observable that adds the Integers emitted by a source Observable and then emits this sum as an Integer, as shown in the following sample code:
def myObservable = Observable.create({ anObserver ->
anObserver.onNext(4);
anObserver.onNext(3);
anObserver.onNext(2);
anObserver.onNext(1);
anObserver.onCompleted();
});
myObservable.sum().subscribe(
[ onNext:{ myWriter.println(it); },
onCompleted:{ myWriter.println("Sequence complete"); },
onError:{ myWriter.println("Error encountered"); } ]
);10
Sequence complete
There are also specialized "sum" methods for Longs, Floats, and Doubles (sumLongs( ), sumFloats( ), and sumDoubles( )).

The average( ) method returns an Observable that calculates the average of the Integers emitted by a source Observable and then emits this average as an Integer, as shown in the following sample code:
def myObservable = Observable.create({ anObserver ->
anObserver.onNext(4);
anObserver.onNext(3);
anObserver.onNext(2);
anObserver.onNext(1);
anObserver.onCompleted();
});
myObservable.average().subscribe(
[ onNext:{ myWriter.println(it); },
onCompleted:{ myWriter.println("Sequence complete"); },
onError:{ myWriter.println("Error encountered"); } ]
);2
Sequence complete
There are also specialized "average" methods for Longs, Floats, and Doubles (averageLongs( ), averageFloats( ), and averageDoubles( )).
A Netflix Original Production
Tech Blog | Twitter @NetflixOSS | Twitter @RxJava | Jobs