rx-java2 - 为什么 RxJava2 中的 distinctUntilChanged() 会阻止具有不同 hashCode 的数据?
问题描述
我曾经distinctUntilChanged()
在 Observable 中过滤重复的发射。但它过滤了不同的发射数据。我使用了如下map()
之前和之后的功能distinctUntilChanged()
,我发现了之前打印的日志。
..
...
.map(t -> {
Timber.d("hashcode: %d", t.hashCode());
return t;
})
.distinctUntilChanged()
.map(t -> {
Timber.d("hashcode2: %d", t.hashCode());
return t;
})
.replay(1)
.autoConnect(0);
打印日志:
hashcode: -1015116098
hashcode: -981267991
为什么没有用“hashcode2”打印任何日志?
解决方案
根据@akarnokd 的评论,
您有一个可变的数据结构,您可以在其中操作以前的项目,或者一遍又一遍地只发送一个引用,因此它总是等于它自己
他说正确t
是一个可变类,它保留一些字段和一个List
.
我更改了foreach
. 事实上我的错误就在那里:(最后,我用foreach
索引循环替换了循环,我的问题解决了。
推荐阅读
- xml - 使用 count() 节点的 Xpath 练习不起作用(我是新手)
- linux-kernel - ebpf 程序加载错误:unknown func bpf_l4_csum_replace#11
- javascript - 隐藏文件上传按钮但显示文件名?
- livecode - 如何编写一个按钮,在 livecode 中保存用户的网站浏览历史
- docxtemplater - Docxtemplater - 循环迭代之间的换行符
- javascript - 如何在javascript中的相同键中合并相似的键值
- google-apps-script - 是否有一个日期函数,我可以通过它提取天数,然后从当前日期中减去它们?
- perl - Perl - 如何在循环内的哈希中添加行?
- ssas - 案例语句 (MDX) 中计算成员的空值
- python - Python游戏的排行榜系统