Les*_*ter 17 java distinct rx-java
我有一组对象,我想要压制重复的项目.我知道Distinct运算符,但如果我没有弄错,它通过正确覆盖的哈希码方法比较项目.但是,如果我的hashcode为相同的对象返回不同的值,并且我想通过我自己设置相等性.distinct有2个重载方法 - 一个没有params,一个有Func1 param,我想我应该使用第二种方法,但是如何exaclty?
.distinct(new Func1<ActivityManager.RunningServiceInfo, Object>() {
@Override
public Object call(ActivityManager.RunningServiceInfo runningServiceInfo) {
return null;
}
})
Run Code Online (Sandbox Code Playgroud)
Dav*_*ten 29
是的,你是正确的,你需要有一致equals()和hashcode()方法,你的对象上能够使用distinct()的被窝里,因为distinct操作员使用HashSet.
distinct带有a 的版本Func1允许您将对象转换为您想要区分的对象(但必须实现一致equals和hashcode方法).
假设我有一个这样的Observable<Person>地方Person:
class Person {
String firstName;
String lastName;
}
Run Code Online (Sandbox Code Playgroud)
然后计算我可以做到的不同名字的数量:
persons.distinct(person -> person.firstName).count();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12710 次 |
| 最近记录: |