Grouping
Grouping is a powerful operation that can be achieved using RxKotlin. This operation allows you to group emissions based on their property. Say, for example, you have an Observable
/ Flowable
emitting integer numbers (Int
), and, as per your business logic, you have some separate code for even and odd numbers and want to handle them separately. Grouping is the best solution in that scenario.
Let's take an example:
fun main(args: Array<String>) { val observable = Observable.range(1,30) observable.groupBy {//(1) it%5 }.blockingSubscribe {//(2) println("Key ${it.key} ") it.subscribe {//(3) println("Received $it") } } }
In this example, I've grouped emissions based on their remainder when divided by 5
, so, basically, there should be 5
groups (0
through 4
). On comment (1)
of this example, we used the groupBy
operator and passed a predicate to it, upon which the grouping should be performed. The...