Совокупности все исходящие потоки и выдавать их inmidiatly с rxJava
У меня есть поток, который испускает страницы данных A, B, C, D...
. Какой оператор я могу использовать, чтобы получить такой поток: [A], [A, B], [A, B, C], [A, B, C, D]...
?
Я знаю collect
или toList
, но они испускают только один раз в конце потока.
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));