0
UserScoreTO 목록을 단일 사용자 개체 (다 대일 관계)로 그룹화하는 데 사용 된이 Rx Stream을 보유하고 있습니다.Flowable of Single의 <User>을 Flowable of List로 변환 <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
소비 내가 가입이 유동성을 소비합니다. 그래서 나는 그 싱글을 구독한다. 비록 이것이 효과적 일지라도 약간 짜증이납니다 ... 나는 단지 하나의 구독을하고 사용자 컬렉션을 소비하고 싶습니다 ...
며칠 전에 나는 다른 질문을했습니다 about this same code. 그 클래스의 전체 코드가 있습니다.
내가 필요한거야! – alexpfx
기다려 .. 사용자 목록이 필요했지만 ... toList(). subscribe (list -> list.forEach (System.out :: println))를 수행했는데 그 것이었다 ... – alexpfx
'.flatMapSingle'은 정확히 이것을 수행하며 빠릅니다. –