我有以下代码: Observable1,Observable2(Object包含UUID字段)。
Observable1.mergeWith(Observable2).distinct().map(...)
然后我想基于.UUID字段而不是.hashcode应用distinct()。事实上,distinct()不起作用(实际上,我可以删除它并且我会得到相同的结果)导致这些observable发出不同的对象。
有没有办法做到这一点?
感谢。
答案 0 :(得分:0)
我应该使用.distinct(object - > object.UUID)
答案 1 :(得分:0)
查看文档,您可以使用KeySelector作为参数。来自source
public final <U> Observable<T> distinct(Func1<? super T,? extends U> keySelector)
返回一个Observable,它发出源发出的所有项目 根据键选择器功能而不同的可观察值。
应该能够将getter方法作为参数传递:
Observable1.mergeWith(Observable2).distinct(MyObject::getUUID).map(...)