【问题标题】:RxJava compare different items by id from two observablesRxJava 通过 id 比较来自两个 observable 的不同项目
【发布时间】:2016-05-17 20:49:45
【问题描述】:

我有两个 Observables (O1 & O2) 发出不同类型的项目。如果A.Id 包含在O1 中,我想从O2 中忽略A*.sameId。到目前为止,我想出的最佳解决方案是首先将 O1 中的所有 Id 加载到 Set 中(等待 onComplete() or blocking )。然后我从O2 加载元素并将它们与O2 Setfilter() 进行一一比较。

仅使用运算符来表达这一点的最佳(最优雅)方式是什么?

【问题讨论】:

    标签: rx-java


    【解决方案1】:

    是的,您需要 O1 的完整集合来检查 O2 的值:

    o1.collect(HashSet::new, (a, b) -> a.add(b))
    .flatMap(set -> o2.filter(v -> !set.contains(v)))
    ...
    

    【讨论】:

    • 正确且更简洁的代码:.collect(HashSet::new, HashSet::add)
    猜你喜欢
    • 2017-09-05
    • 2019-06-06
    • 2014-09-07
    • 2022-01-02
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    • 1970-01-01
    相关资源
    最近更新 更多