最簡單的例子是像這樣的字符串流:["3", "a", "b", "c", "1", "a", "2", "a", "b"]數字表示它的組應該包含多少個元素。非常重要的一點是,流是連續的,所以我們不能只是等待下一個數字來分割流。據我所知,RXJava2中沒有內置功能var flowable = Flowable.concat(Flowable.fromArray("3", "a", "b", "c", "1", "a", "2", "a", "b"), Flowable.never());flowable/*Something here*/.blockingSubscribe(System.out::println);預期的輸出將是:[3, a, b, c][1, a][2, a, b]
1 回答

catspeake
TA貢獻1111條經驗 獲得超0個贊
我后來發現了阿卡諾克的RxJava2擴展包。使用它,我能夠構建這個,它可以做我想要的:
var flowable = Flowable.concat(Flowable.fromArray("3", "a", "b", "c", "1", "a", "2", "a", "b"), Flowable.never());
flowable.compose(FlowableTransformers.bufferUntil(new Predicate<>() {
private int remaining = 0;
@Override
public boolean test(String next) {
if(next.chars().allMatch(Character::isDigit)) {
remaining = Integer.parseInt(next);
}
return --remaining < 0;
}
})).blockingSubscribe(System.out::println);
添加回答
舉報
0/150
提交
取消