我需要按Person
过滤这些name
对象,然后计算每个唯一Device
的{{1}}的数量。
name
最终结果应该是:
data class Device(val name: String, val price: Int)
data class Person(val name: String, val age: Int, val devices: List<Device>)
data class PersonFinal(val name: String, val age: Int, val count: Int)
val person1 = Person("Jack", 20, listOf(Device("Samsung", 1500), Device("iPhone", 2500)))
val person2 = Person("Jack", 20, listOf(Device("Samsung", 3500), Device("iPhone", 5500)))
val person3 = Person("John", 20, emptyList())
如何使用Kotlin做到这一点?
答案 0 :(得分:0)
如果有人需要,我的最终解决方案如下:
listOf(person1, person2, person3)
.groupBy { it.name }
.map { (_, list) ->
PersonFinal(list.first().name, list.first().age, list.sumBy { it.devices.count() })
}
打印[PersonFinal(name=Jack, age=20, count=4), PersonFinal(name=John, age=20, count=0)]