小编Dmy*_*yak的帖子

如何筛选更改超过阈值的值

我有一个发出数字的Observable(实际上是整数,双数,BigDecimal doen'st).我有一个在可观察的合成时间定义的阈值.换句话说,在可观察的生命期内,阈值不会改变.

我需要的是过滤掉与阈值内最后一次传递的值不同的值.或者改写它:只有当它与上一次传递的值超过阈值时才传递值.

示例可以更好地解释它:

Source observable values: 
[5, 4, 7, 9, 15, 14, 13, 12, 11, 7, 3, 2, 1]

Filetered values with threshold = 3 : 
[5, 9, 15, 11, 7, 3]
Run Code Online (Sandbox Code Playgroud)

为了更好地说明它,我们假设它是温度读数,例如.我想只过滤温度变化超过3度的那些值.第一个值总是通过并作为初始值进行比较.例如,如果第一温度读数是21摄氏度并且在一小时内每个后续读数在[18..24],那么这些值都不应该通过下游.但是一旦它越过这些边界就应该传递并创建新的边界来进行比较.

问题是:如何仅使用RxJava运算符执行此操作?或者除了在rx管道外存储状态之外别无其他方式(在易失性或原子引用或任何其他同步状态,细节无关紧要)?

rx-java rx-java2

2
推荐指数
1
解决办法
103
查看次数

标签 统计

rx-java ×1

rx-java2 ×1