如何计算项目反应堆通量的平均值?
How to calculate the average of a Project Reactor Flux?
我有一个 returns 一个 Flux<SensorData>
的方法,我们假设 SensorData 有一个字段 measure: Integer
.
我想计算整个Flux的measure的平均值。怎么做到的?
val sensorFlux: Flux<SensorData> = sensorRepository.findAll()
...
Mono<Double> average = sensorFlux.collect(Collectors.averagingInt(SensorData::getMeasure))
另一种使用辅助对象的方法:
val average = sensorFlux.map { it.measure }
.map { Measure(1, it) }
.reduce { t: Measure, u: Measure -> Measure(t.elements + u.elements, t.sum + u.sum) }
.map { it.sum / it.elements }
---
data class Measure(var elements: Int, var sum: Long)
我有一个 returns 一个 Flux<SensorData>
的方法,我们假设 SensorData 有一个字段 measure: Integer
.
我想计算整个Flux的measure的平均值。怎么做到的?
val sensorFlux: Flux<SensorData> = sensorRepository.findAll()
...
Mono<Double> average = sensorFlux.collect(Collectors.averagingInt(SensorData::getMeasure))
另一种使用辅助对象的方法:
val average = sensorFlux.map { it.measure }
.map { Measure(1, it) }
.reduce { t: Measure, u: Measure -> Measure(t.elements + u.elements, t.sum + u.sum) }
.map { it.sum / it.elements }
---
data class Measure(var elements: Int, var sum: Long)