gpt4 book ai didi

java - 如何过滤 RXJava 中 observable 发出的重复值?

转载 作者:太空狗 更新时间:2023-10-29 22:44:14 25 4
gpt4 key购买 nike

我有一个对象集合,我想在其中抑制重复项。我知道 Distinct运算符,但如果我没记错的话,它会通过正确覆盖的哈希码方法来比较项目。但是,如果我的哈希码为相同的对象返回不同的值,并且我想自己设置相等性怎么办。 distinct 有 2 个重载方法 - 一个没有参数,一个有 Func1 参数,我想我应该使用第二种方法,但有多精确?

    .distinct(new Func1<ActivityManager.RunningServiceInfo, Object>() {
@Override
public Object call(ActivityManager.RunningServiceInfo runningServiceInfo) {
return null;
}
})

最佳答案

是的,你是对的,你需要有一致的 equals()hashcode()对象上的方法能够使用 distinct()因为在幕后 distinct运算符(operator)使用 HashSet .

distinct的版本用Func1允许您将对象转换为您想要与众不同的东西(但必须实现一致的 equalshashcode 方法)。

假设我有一个 Observable<Person>其中 Person是这样的:

class Person {
String firstName;
String lastName;
}

然后计算不同名字的数量我可以这样做:

persons.distinct(person -> person.firstName).count();

关于java - 如何过滤 RXJava 中 observable 发出的重复值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32286371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com