假设我有一个项目列表并将其发出:
Observable<Item> items = Observable.fromIterable(list);
现在我想要一个插入标题的第二个observable。如果必须插入标题,可以通过比较两个连续项来决定。任何想法如何做到这一点?
逻辑如下:
我需要类似scan
的内容,但操作符必须发出输入项+可选的标题项...
答案 0 :(得分:2)
您可以使用滑动窗口缓冲并在重叠窗口上执行flatMap以在项目之间插入标题/分隔符:
Observable.just(1, 3, 4, 5, 7, 8, 10, 12, 14)
.buffer(2, 1)
.flatMapIterable(v -> {
if (v.size() <= 1) {
return v;
}
if (v.get(1) - v.get(0) > 1) {
return Arrays.asList(v.get(0), 1000);
}
return Collections.singletonList(v.get(0));
})
.subscribe(System.out::println);