我有一个看起来像这样的对象:
data class Product(val name: String,
val maker: List<String>)
目前,我从后端收到的回复(并且无法更改)如下:
[{"name":"Car", "maker":["Audi"]},
{"name":"Car", "maker":["BMW"]},
{"name":"Motorcycle", "maker":["Yamaha"]},
{"name":"Motorcycle", "maker":["Kawasaki"]}
]
实际列表包含大量数据,但可以信任name
字段进行分组。
我可以用什么方式映射这些数据,以便最终结果如下:
[{"name":"Car", "maker":["Audi", "BMW"]},
{"name":"Motorcycle", "maker":["Yamaha","Kawasaki"]}
]
答案 0 :(得分:5)
只需使用groupBy { ... }
,然后处理群组地图条目,将其替换为单个Product
:
val result = products.groupBy { it.name }.entries.map { (name, group) ->
Product(name, group.flatMap { it.maker })
}