我使用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”打印任何日志?
答案 0 :(得分:0)
根据@akarnokd的评论,
您有一个可变的数据结构,可以处理先前的数据,或者一次又一次仅发送一个引用,因此该引用始终与自己相等。
他说正确的t
是一个可变类,其中保留了一些字段和一个List
。
我在foreach
中更改了“列表”的项目。实际上,我的错误在那里:(,最后,我用索引循环替换了foreach
循环,并且问题解决了。