gpt4 book ai didi

kotlin - 如何使用 Kotlin 从带有内部列表的列表创建 map

转载 作者:IT老高 更新时间:2023-10-28 13:42:07 26 4
gpt4 key购买 nike

所以我有这样的数据类:

data class Item(val name: String)
data class Order(val id: Int, val items: List<Item>)

我有一个订单列表。

我的问题是,如何使用 Kotlin 的集合 API 创建一个以项目名称为键和以该项目为值的订单列表的 map ?

最佳答案

假设你有 orders: List<Order> ,可以先 flatMap 订单成对Order和项目名称(以便每个 Order 可以出现多次,如果它有多个 Item ),然后使用 groupBy 将这些对按项目名称分组,将订单对分组:

val result = orders
.flatMap { o -> o.items.map { i -> o to i.name } }
.groupBy({ (_, name) -> name }, valueTransform = { (o, _) -> o })

groupBy论据,{ (_, name) -> name }是从每对中获取名称的分组键选择器函数,{ (o, _) -> o }在将项目收集到列表时转换项目,它从对中获取顺序。

(runnable demo of this code)

如果你想消除多次出现的相同Order如果它包含单个 Item多次,使用 distinct 如下:.flatMap { o -> o.items.distinct().map { i -> ... } }

关于kotlin - 如何使用 Kotlin 从带有内部列表的列表创建 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43614291/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com