The buffer() operator will gather emissions within a certain scope and emit each batch as a list or another collection type. The scope can be defined by a fixed buffer sizing or a timing window that cuts off at intervals or even slices by the emissions of another Observable.
Buffering
Fixed-size buffering
The simplest overload for buffer() accepts a count argument that batches emissions in that fixed size. If we wanted to batch up emissions into lists of eight elements, we can do that as follows:
import io.reactivex.Observable;
public class Launcher {
public static void main(String[] args) {
Observable.range(1,50)
.buffer(8)
.subscribe(System.out::println);
}
}
The output is as...