我有一个发送数据页A, B, C, D...
的流。我可以使用哪个运算符来获取这样的流:[A], [A, B], [A, B, C], [A, B, C, D]...
?
我知道collect
或toList
,但它们只会在流的末尾发出一次。
答案 0 :(得分:4)
您可以试用'scan'运算符。
答案 1 :(得分:1)
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));