Я провел простое тестирование решения с несколькими целыми числами. Надеюсь, что это решение поможет вам 2 потока целых чисел с разным размером
public void run(String... args) throws Exception {
Observable<Integer> integerObservable1 = Observable.just(1, 2, 3,4);
Observable<Integer> integerObservable2 = Observable.just(1, 2);
runObservable(integerObservable1, integerObservable2)
.map(o -> {
System.out.println(o);
return o;
}).subscribe();
}
private Observable<Object> runObservable(Observable<Integer> integerObservable1, Observable<Integer> integerObservable2) {
return Observable.merge(
Observable.zip(integerObservable1, integerObservable2, (BiFunction<Integer, Integer, Object>) (integer, integer2) -> integer + " " + integer2),
Single.zip(integerObservable1.toList(), integerObservable2.toList(), (integers, integers2) -> Math.min(integers.size(), integers2.size()))
.flatMapObservable(integer -> Observable.merge(integerObservable1.skip(integer), integerObservable2.skip(integer)))
.map(integer -> integer + " " + "static value")
);
}
вывод кода:
1 1
2 2
3 статическое значение
4 статическое значение
поскольку поток 1 имеет 2 элемента, а поток 2 имеет 4 элемента, вы оставили его статическим как нольне поддерживается в rxjava, но вы можете выбрать, может ли статическое значение быть нулевым или последним значением