Kotlin - 如何添加列表中重复元素的计数以生成另一个列表

Kotlin - How to add counts of duplicate elements in a list to generate another list

我有一个简单的问题,但我似乎无法使用 Kotlin 中的预定义方法来执行此操作。这就是我要解决的问题。

data class A(val id: Int, val amount: Int)

private List<A> generateTotal(listOfA : List<A>)

列表中有几个重复的 id。例如:

A(1, 2), A(1,3), A(2,1)

generateTotal 应该 return A(1, 5)A(2,1) 上面列表中的 2 个元素已经相加。

使用 Kotlin 的一些现有函数是否可行?

谢谢

这应该可以做到。第一组按ID。结果 Map 的值是具有相同 ID 的项目列表,因此我们可以将这些列表映射到单个项目。

private fun generateTotal(listOfA: List<A>): List<A> =
    listOfA.groupBy(A::id)
        .values.map { A(it[0].id, it.sumOf(A::amount)) }