Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何根据流中的元素动态划分连续的RXJava流?_Java_Rx Java_Rx Java2 - Fatal编程技术网

如何根据流中的元素动态划分连续的RXJava流?

如何根据流中的元素动态划分连续的RXJava流?,java,rx-java,rx-java2,Java,Rx Java,Rx Java2,最简单的示例是如下所示的字符串流: [“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()); 可流动/*此处某物*/.bloc

最简单的示例是如下所示的字符串流:

[“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());
可流动/*此处某物*/.blockingSubscribe(System.out::println);
预期产出将是:

[3, a, b, c]
[1, a]
[2, a, b]

我后来找到了阿卡诺克的包裹。利用这一点,我能够构建这个,它实现了我想要的:


var flowable=flowable.concat(flowable.fromArray(“3”,“a”,“b”,“c”,“1”,“a”,“2”,“a”,“b”),flowable.never());
flowable.compose(flowabletranformers.bufferUntil)(新谓词(){
私有整数剩余=0;
@凌驾
公共布尔测试(字符串下一步){
if(next.chars().allMatch(Character::isDigit)){
剩余=整数.parseInt(下一个);
}
return——剩余<0;
}
})).blockingSubscribe(System.out::println);

需要注意的是,您构建的Flowable是不可重用的。若要重复使用,
剩余的
字段需要按订阅进行设置。
defer
操作符提供您需要的:
Flowable.defer(()->Flowable.compose(…)