有个这样的需求:
我有2个List,List中的实体为AppPieData,如下代码
data class AppPieData(val name: String, val y: Int)
我需要将name相同的item,把它们的y相加最终合并为同一个item
可以使用groupBy方法,想将相同的name的item分为一组,之后遍历合并为item
val list1 = listOf(AppPieData("A", 10), AppPieData("B", 20), AppPieData("C", 30))
val list2 = listOf(AppPieData("A", 5), AppPieData("B", 15), AppPieData("D", 25))
val result = (list1 + list2)
.groupBy { it.name }
.map { (name, groupList) ->
AppPieData(
name,
groupList.sumBy { it.y }
)
}
println(result)
最终输出:
[AppPieData(name=A, y=15), AppPieData(name=B, y=35), AppPieData(name=C, y=30), AppPieData(name=D, y=25)]
评论区