聚合所有发出的流并使用 rxJava 立即发出它们
Aggregate all emited streams and emit them inmidiatly with rxJava
我有一个发出数据页的流 A, B, C, D...
。我可以使用哪个运算符来获取这样的流:[A], [A, B], [A, B, C], [A, B, C, D]...
?
我知道 collect
或 toList
但它们只在流结束时发出一次。
您可以尝试 'scan' 运算符。
Java 8
您可以通过以下方式获得 String[] 流:
List<String> array = Arrays.asList("A","B","C","D");
String[] st ={""};
Stream<String[]> stream = array.stream().map(x -> (st[0]+=x).split("\B"));
//print it
stream.forEach(s -> System.out.println(Arrays.toString(s)));
RX JAVA(扩展 JohnWowUs 的回答)
List<String> array = Arrays.asList("A","B","C","D");
Func2<String,String,String> function = new Func2<String,String,String>(){
@Override
public String call(String paramT1, String paramT2) {
return paramT1 + paramT2;
}
};
Observable<String> scan = Observable.from(array).scan(function);
scan.forEach(x-> System.out.println(x));
我有一个发出数据页的流 A, B, C, D...
。我可以使用哪个运算符来获取这样的流:[A], [A, B], [A, B, C], [A, B, C, D]...
?
我知道 collect
或 toList
但它们只在流结束时发出一次。
您可以尝试 'scan' 运算符。
Java 8
您可以通过以下方式获得 String[] 流:
List<String> array = Arrays.asList("A","B","C","D");
String[] st ={""};
Stream<String[]> stream = array.stream().map(x -> (st[0]+=x).split("\B"));
//print it
stream.forEach(s -> System.out.println(Arrays.toString(s)));
RX JAVA(扩展 JohnWowUs 的回答)
List<String> array = Arrays.asList("A","B","C","D");
Func2<String,String,String> function = new Func2<String,String,String>(){
@Override
public String call(String paramT1, String paramT2) {
return paramT1 + paramT2;
}
};
Observable<String> scan = Observable.from(array).scan(function);
scan.forEach(x-> System.out.println(x));