求Kotlin Lambda优化建议:统计每位司机对应总收入的实现
Kotlin 司机营收统计代码优化方案
原代码问题分析
现有代码逻辑正确,但存在较多冗余的中间操作:一共触发三次集合遍历,还生成了临时Pair列表、分组cost列表等不必要的中间对象,内存和时间效率都有优化空间,代码也不够简洁。
最优简洁写法
Kotlin标准库内置的groupingBy聚合API可以直接实现需求,仅需一次遍历即可得到结果,无需任何中间转换:
val driversToIncome = trips.groupingBy { it.driver }.sumOf { it.cost }
如果使用的是Kotlin 1.4以下版本,也可以用fold实现等价逻辑:
val driversToIncome = trips.groupingBy { it.driver } .fold(0) { total, trip -> total + trip.cost }
优化点说明
- 效率更高:仅遍历一次
trips集合,边分组边累加营收,没有多余的中间集合生成,数据量较大时性能优势尤为明显 - 可读性更强:代码逻辑高度贴合需求语义,无需额外注释就能直观理解「按司机分组、统计每个司机营收总和」的业务逻辑
- 代码更精简:省去了中间的
map、toMap等转换步骤,代码量缩减70%以上
内容的提问来源于stack exchange,提问作者Ademord
相关产品推荐
相关产品推荐

