Совокупности все исходящие потоки и выдавать их inmidiatly с rxJava


У меня есть поток, который испускает страницы данных A, B, C, D.... Какой оператор я могу использовать, чтобы получить такой поток: [A], [A, B], [A, B, C], [A, B, C, D]...?

Я знаю collect или toList, но они испускают только один раз в конце потока.

2 2

2 ответа:

Можно попробовать оператор 'scan'.

Java 8

Вы можете получить поток строки [] следующим образом:

  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));