如何基于字段应用distinct而不是具有对象的代码(rxjava2)

时间:2018-01-05 14:49:08

标签: java rx-java reactive-programming

我有以下代码: Observable1,Observable2(Object包含UUID字段)。

Observable1.mergeWith(Observable2).distinct().map(...)

然后我想基于.UUID字段而不是.hashcode应用distinct()。事实上,distinct()不起作用(实际上,我可以删除它并且我会得到相同的结果)导致这些observable发出不同的对象。

有没有办法做到这一点?

感谢。

2 个答案:

答案 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(...)