我有
[1,2,3,2,4,5,0,2,1,3,4,5,2,2,1,4,5]
我想要的输出是
[[1,2,3,2,4,5],[1,3,4,5],[1,4,5]]
这意味着我想从输入序列中提取带有一些开始标记(此处为
1
)和一些结束标记(此处为5
)的块。
这些块之间的元素将被忽略。
是否有可读的
rx-java
运算符组合来实现此目的?
是的。您需要使用
buffer
运算符来获取开始和结束指示符。由于元素本身就是指标,因此您必须 publish
原始序列并将它们也汇集到指标中。
Observable
.fromArray(1, 2, 3, 2, 4, 5, 0, 2, 1, 3, 4, 5, 2, 2, 1, 4, 5)
.publish(v ->
v.buffer(
v.filter(w -> w == 1),
u -> v.filter(w -> w == 5)
)
)
.subscribe(System.out::println);