list根据对象中的某个字段分组 根据分组后的list中的某个字段计算和转map
时间: 2024-04-24 22:23:26 浏览: 140
您可以使用`groupBy`函数将列表按照某个字段分组,然后使用`sumBy`函数计算每个分组中指定字段的总和,并将结果转换为Map。
下面是一个示例代码:
```kotlin
data class Person(val name: String, val age: Int, val group: String)
fun main() {
val personList = listOf(
Person("Alice", 25, "Group1"),
Person("Bob", 30, "Group2"),
Person("Charlie", 35, "Group1"),
Person("David", 40, "Group2")
)
val groupSumMap = personList.groupBy { it.group }
.mapValues { (_, groupList) -> groupList.sumBy { it.age } }
println(groupSumMap)
}
```
输出结果为:
```
{Group1=60, Group2=70}
```
在上面的例子中,我们首先定义了一个`Person`类,包含姓名、年龄和分组三个字段。然后创建了一个包含多个`Person`对象的列表`personList`。接下来,我们使用`groupBy`函数将列表按照`group`字段进行分组。然后使用`mapValues`函数遍历每个分组,计算每个分组中所有人的年龄总和,并将结果存储在一个Map中。
希望这可以帮助到您!如果还有其他问题,请随时提问。
阅读全文