科特林的地图总和值

时间:2020-04-10 11:49:39

标签: 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)]

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

例如,我如何总结亚历克斯和约翰的所有岁月?

1 个答案:

答案 0 :(得分:2)

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

val people: Map<String, List<Work>> = ...
val peopleToSumOfYears: Map<String, Int> = 
        people.mapValues { (name, works) -> works.sumBy { it.years } }