假设我有两个数组列表,我想从第一个列表中发出一个项目,然后从第二个列表中发出4个项目,并将它们组合成第三个observable,它会发出此运算符的结果。如果第二个列表少于4个项目,则发出此列表中剩余的所有项目。
O1:A,B,C,D
O2:1,2,3,4,5,6,7,8,9,10,11,12,13,14
结果将是:A1234 B5678 C9101112 D1314
答案 0 :(得分:3)
Haven没有被编译器检查过,这只是我能想到的:
Observable<T> o1 = ...
Observable<T> o2 = ...
Observable<T> o3 = o1.zip(o2.buffer(4), (a, b) -> {
List<T> contents = new ArrayList<>();
contents.add(a);
contents.addAll(b);
return contents;
}).flatMap(list -> Observable.from(list));
buffer
第二个Observable
(您想要拍摄4个中的一个)zip
使用第一个Observable
,并从2 List<T>
flatMap
将Observable<List<T>>
加入Observable<T>
Observable
属于同一类型。