如何在Rxjava中通过键合并两个Observable?

时间:2018-06-25 02:34:14

标签: java android rx-java reactive-programming rx-android

我有一个可观察的

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

数据集:

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;
}

数据集:

userId  vip
   1   true

预期的合并结果:

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

众所周知,Rxjava具有MergeConcatZipJoin,但它们似乎都无法做到这一点

1 个答案:

答案 0 :(得分:0)

如果两个流的用户顺序相同,则您可以zip

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

您可以修改u,但最好选择不变性(因此创建一个新对象)。

如果两个流的顺序不同,则可以使用rxjava2-extras中的matchWith