此数据对象包括String类型的数据,ArrayList类型的数据。
Flowable.just(rxjava.list1).concatMap(new Function<ArrayList<Data>, Publisher<Data>>() {
@Override
public Publisher<Data> apply(ArrayList<Data> data) throws Exception {
return Flowable.fromIterable(data);
}
}).doOnNext(new Consumer<Data>() {
@Override
public void accept(Data data) throws Exception {
Flowable.fromIterable(data.data).filter(new Predicate<String>() {
@Override
public boolean test(String s) throws Exception {
return "d".equals(s);
}
}).subscribe(new Consumer<String>() {
@Override
public void accept(String s) throws Exception {
System.out.println(data.name+" loop done");
data.name=data.name+"done";
}
});
}
}).subscribe(new Consumer<Data>() {
@Override
public void accept(Data data) throws Exception {
System.out.println("data name ==> "+data.name);
}
});
我想做得更好。例如,更容易让其他人理解或编写更简洁的代码。如何改变?
答案 0 :(得分:0)
使用concatMap
:
Flowable.fromIterable(rxjava.list1)
.concatMap(data ->
Flowable.fromIterable(data.data)
.filter(s -> "d".equals(s))
.doOnNext(s -> { data.name = data.name + "done" })
.ignoreElements()
.andThen(Flowable.just(data))
)
.subscribe(data -> {
System.out.println("data name ==> "+data.name);
});