kotlin 中的求和映射值

Scr*_*peW 6 kotlin

我有一张结构如下的地图:

"Alex": [Work(workPlace="workPlace", years=1),
        Work(workPlace="workPlace", years=4),
        Work(workPlace="workPlace", years=5),
        Work(workPlace="workPlace", years=1)],

"John": [Work(workPlace="workPlace", years=2),
        Work(workPlace="workPlace", years=2),
        Work(workPlace="workPlace", years=1),
        Work(workPlace="workPlace", years=6)]
Run Code Online (Sandbox Code Playgroud)

求和这些值的最佳方法是什么?

例如,我如何总结亚历克斯和约翰的所有这些年?

zsm*_*b13 10

我认为您主要是在寻找该mapValues函数,该函数允许您转换地图的值,同时保留其键。你可以这样使用它:

val people: Map<String, List<Work>> = ...
val peopleToSumOfYears: Map<String, Int> = 
        people.mapValues { (name, works) -> works.sumOf { it.years } }
Run Code Online (Sandbox Code Playgroud)