как объединить два наблюдаемых по ключу в Rxjava? - PullRequest
0 голосов
/ 25 июня 2018

У меня есть наблюдаемая

class User {
    public int userId;
    public String userName;
    public int age;
    public Boolean vip;
}

Dataset:

userId  userName  age   vip
   1       ham     21  false
   2       lily    18  false
   3       potter  38  false

Наблюдаемый b

class VIP {
    public int userId;
    public Boolean vip;
}

Dataset:

userId  vip
   1   true

ожидаемый результат слияния:

userId  userName  age   vip
   1       ham     21  true
   2       lily    18  false
   3       potter  38  false

Как известно, у Rxjava есть Merge, Concat, Zip, Join, но все они, похоже, не могут этого сделать

1 Ответ

0 голосов
/ 25 июня 2018

Если два потока имеют одинаковый порядок для пользователя, то вы можете zip их:

users.zipWith(vips, (u,v) -> new User(u.userName, u.userId, u.age, v.vip))

Вы можете изменить u, но лучше всего использовать неизменяемость (поэтому создайте новый объект).

Если два потока имеют разный порядок, вы можете использовать matchWith из rxjava2-extras .

...