kotlin 按数组列表中的属性值之和进行分组

imi*_*min 4 android kotlin

我有一个包含对象列表的数组列表,如下所示:

[Activities(id=3116, studentID=5c1a7986c98da061141475b4, actionID=1234, actionName=hohoho, totalPoints=100),
Activities(id=3117, studentID=5c1a7986c98da061141475b4, actionID=4321, actionName=lalala, totalPoints=7),
Activities(id=3118, studentID=5c1a7986c98da061141475b4, actionID=4321, actionName=lalala, totalPoints=4),
Activities(id=3119, studentID=5c1a7986c98da061141475b4, actionID=1234, actionName=hohoho, totalPoints=10)]
Run Code Online (Sandbox Code Playgroud)

我可以使用任何 kotlin 函数来对上面的totalPoints基于组求和吗?actionID如果上面的 arraylist 在 sql 中,我可以做类似的事情SELECT actionID, SUM(totalPoints) FROM activities GROUP BY actionID,它将返回

actionID     totalPoints
1234         110
4321         11
Run Code Online (Sandbox Code Playgroud)

Mad*_*hat 5

如果您有 的列表,那么您可以获得分组activities的总和, 如下所示totalPointsactionID

val result = activities
        .groupBy { it.actionID }
        .mapValues { entry -> entry.value.sumBy { it.totalPoints } }
Run Code Online (Sandbox Code Playgroud)

result将是一个包含作为actionID其键和值作为总和的映射totalPoints各自的总和的映射actionID

打印result会给

{1234=110, 4321=11}
Run Code Online (Sandbox Code Playgroud)