0

私はクラス User を持っています:

class User {
  String companyId;
}

およびクラス Company:

class Company {
    String id;
    List<User> users;
}

会社によって発行されたユーザーを「グループ化」し、Observable<User>を返す必要がありObservable<Company>ます。私はこれを持っています:

public Observable<Company> getCompanies(Observable<User> users) {
    return users.distinct(new Func1<User, String>(){
        @Override
        public String call(User user) {
            return user.companyId;
        }
    }).map(new Func1<User, Company>(){
         @Override
         public Company call(User user) {
             return new Company(user.companyId);
         }
    });
}

それは機能しますが、companyId によって個別のユーザーを取得しているだけです。List<User>各会社の を設定する必要があります。これを解決するために使用できる演算子はありますか?

4

1 に答える 1

1

解決しました!オペレーターがいるgroupBy-.-」

public Observable<Company> getCompanies(Observable<User> users) {
    return users.groupBy(new Func1<User, String>(){
        @Override
        public String call(User user) {
            return user.companyId;
        }
    }).flatMap(new Func1<GroupedObservable<String, User>, Observable<List<User>>>() {
                @Override
                public Observable<List<User>> call(GroupedObservable<String, User> grouped) {
                    return grouped.toList();
                }
            }, new Func2<GroupedObservable<String, User>, List<User>, Company>() {
                @Override
                public Company call(GroupedObservable<String, User> grouped, List<User> users) {
                    return new Company(grouped.getKey(), users);
                }
            });
于 2017-01-23T15:09:11.977 に答える