After covering merging and concatenation, let's get an easy combine operation out of the way. The Observable.amb() factory (amb stands for ambiguous) will accept an Iterable<Observable<T>> and emit the emissions of the first Observable that emits, while the others are disposed of. The first Observable with an emission is the one whose emissions go through. This is helpful when you have multiple sources for the same data or events and you want the fastest one to win.
Here, we have two interval sources and we combine them with the Observable.amb() factory. If one emits every second while the other every 300 milliseconds, the latter is going to win because it will emit first:
import io.reactivex.Observable;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
public class Launcher {
public static void main(String[] args) {
//emit...