从可变列表到Kotlin中的可变映射

从可变列表到Kotlin中的可变映射,kotlin,mutablelist,mutablemap,Kotlin,Mutablelist,Mutablemap,我有一个属于自定义类的可变对象列表。 类别费用具有以下属性: 数量 类别 我想通过遍历上面的列表来创建一个可变映射,结果如下: 类别_1:将类别_1作为类别的所有金额的总和 类别2:将类别2作为类别的所有金额的总和 如果可能的话,我正在寻找一艘班轮。Kotlin惯用代码 这就是我到目前为止所做的: listOfExpenses.associateTo(expensesByCategory) {it.category to it.amount} 我需要最后一个部分:it.amount是属于

我有一个属于自定义类的可变对象列表。 类别费用具有以下属性:

  • 数量
  • 类别
我想通过遍历上面的列表来创建一个可变映射,结果如下:

类别_1:将类别_1作为类别的所有金额的总和

类别2:将类别2作为类别的所有金额的总和

如果可能的话,我正在寻找一艘班轮。Kotlin惯用代码

这就是我到目前为止所做的:

listOfExpenses.associateTo(expensesByCategory) {it.category to it.amount}
我需要最后一个部分:it.amount是属于某一类别的所有金额的总和


listOfExpenses是费用对象的列表,expensesByCategory是我要修改的地图

我知道这不止一行,但它可以满足您的需要

val expensesByCategory = listOfExpenses
    .groupBy { it.category }
    .mapValues { it.value.sumBy { it.amount } }

尼西!:)这正是我想要的。后续问题:如果金额是双精度的而不是整数怎么办?我得到了一些类型不匹配,我认为sumBy期望Int?Nvm找到了sumByDouble函数:)仍然是一个后续问题:如果用英语阅读此代码语句,会怎么样?我不理解这个问题。函数名是描述性的。