0
UserScoreTOのリストを単一のUserオブジェクトにグループ化するために使用されたこのRx Streamを持っています(多対1の関係)。Flowable of Singleの<User>をFlowableのリストに変換する<User>
public void execute() {
getUsers()
.flatMap(list -> Flowable.fromIterable(list))
.groupBy(userScoreTO -> userScoreTO.id)
.flatMap(groups -> Flowable.fromCallable(() -> groups.collect(User::new, (user, userscore) -> {
user.id = userscore.id;
user.name = userscore.name;
user.totalScore += userscore.score;
}))).subscribe(userSingle -> userSingle.subscribe(new SingleObserver<User>() {
@Override
public void onSubscribe(Disposable d) {
System.out.println("onSubscribe");
}
@Override
public void onSuccess(User user) {
System.out.println(user);
}
@Override
public void onError(Throwable e) {
System.out.println(e);
}
}));
}
あなたは、私はそれが放出する一部のSingle's
を消費し、それに加入し、この流動性のを消費するために、見ることができるように。だから私はそのシングルも購読している。これは動作しますが、少し面倒です...私は1つのサブスクリプションを作成し、ユーザーのコレクションを消費したいと思います...
私は別の質問about this same codeを尋ねました。そのクラスの完全なコードがそこにあります。最後にflatMap
を置く
私は必要なものです! – alexpfx
待ちました。私はユーザーリストが必要でした...しかし、私は.toList()。subscribe(list-> list.forEach(System.out :: println))しました。それはそれです... – alexpfx
'.flatMapSingle'はこれを正確に行い、より高速です。 –