聚合所有发出的流并使用 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]...?

我知道 collecttoList 但它们只在流结束时发出一次。

您可以尝试 '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));