我想知道如何识别当前正在处理数组中的哪个元素。例如 我想打印以下内容:
e
1
Element1 consumed
e
2
Element2 consumed
e
3
Element2 consumed
请问如何修改以下代码以获得给定的结果。
代码:
public static void main(String[] args) {
Observable<String> stringObservable = Observable.just("e1", "e2", "e3");
stringObservable
.map(x->x.split(""))//return non-observable
.flatMap(y->Observable.fromArray(y)//return observable
.map(n->n))
.observeOn(Schedulers.io())
.blockingSubscribe(getObserver());
}
答案 0 :(得分:1)
在用于拆分源项目的内部序列上使用doOnNext
和doOnComplete
:
public static void main(String[] args) {
Observable<String> stringObservable = Observable.just("e1", "e2", "e3");
stringObservable
.flatMap(x ->
Observable.fromArray(x.split(""))
.doOnNext(n ->
System.out.println(n)) // <-------------------- prints each split item
.map(n->n)
.doOnComplete(() ->
System.out.println(
"Element " + x + " consumed")) // <--------- end of processing of x
)
.observeOn(Schedulers.io())
.blockingSubscribe(getObserver());
}
答案 1 :(得分:0)
您可能想看一下doOnEach运算符,可以让他们在那里打印 http://reactivex.io/RxJava/javadoc/rx/Observable.html#doOnEach(rx.functions.Action1)