如何在Kotlin中计算列表指定字段平均值(类似maxOf用法)
Kotlin 计算Location列表speed字段平均值方案
和你用来求最大值的maxOf扩展函数同属Kotlin标准库集合API,官方直接提供了求平均值的内置方法,无需套用Java实现逻辑。
标准写法(Kotlin 1.5及以上)
和maxOf的调用逻辑完全一致,直接使用averageOf即可:
val avgSpeed: Double = myList.averageOf { it.speed }
以你给出的示例数据计算,该代码返回结果为4.75。
低版本兼容写法
若使用的Kotlin版本低于1.5,可先映射提取所有speed值组成数值列表,再调用average()计算:
val avgSpeed: Double = myList.map { it.speed }.average()
使用说明
- 以上方法原生支持
Int、Long、Float、Double所有内置数值类型,无需额外手动转换类型 - 空列表调用上述方法会返回
Double.NaN,如果需要自定义空列表兜底值,可增加前置判断:val avgSpeed = if (myList.isEmpty()) 0.0 else myList.averageOf { it.speed } - 无需手动编写循环累加逻辑、或调用Java Stream相关API,标准库扩展已经做了对应性能优化。
内容的提问来源于stack exchange,提问作者SoulReaver313
相关产品推荐
相关产品推荐

