当前位置: 首页 > 知识库问答 >
问题:

如何在kotlin中使用groupBy从复杂的结构中构造地图

沈永新
2023-03-14

我对kotlin中的收藏感到困惑。

结构有点复杂。

data class Request(
    val region: Region,
    val promotions: List<Promotion>,
)


data class Promotion(
    var promotionCode: String,
    val promotionType: String,
    val coupons: List<Coupon>
) 


data class Coupon(
    val reminderType: ReminderType,
    val couponCode: String,
    val count: Int,
    val couponMultiLanguages: List<CouponDescription>
) 

现在我想得到一张地图,<code>地图

我被困在这里

val result: Map<ReminderType, List<Promotion>> = promotions.map { it.coupons.groupBy { it.reminderType } }

共有1个答案

时同
2023-03-14

方法之一

val result = promotions.flatMap { p ->   //flatMap will flatten the list of list
    p.coupons.map { 
       it to p   // this creates a pair of coupon to promotion
    } 
}.groupBy(
   { it.first.reminderType } // specify reminderType as key selector
) { 
    it.second // promotion as value, groupBy adds these to list
}

在这里,我们首先将每个优惠券映射到促销,然后按优惠券分组

 类似资料:
  • 商店1 第1节 第2节 2号商店 null null null 我会在'store'属性中设置区段,因为不同的商店有不同的区段。 到目前为止我认为一切都是正确的。我的问题是如何将用户分配到商店中的特定区段。会是user.company.store[3].section[1]吗?如果一个节/存储区被删除,那么节/存储区的indexOf值不会改变吗?人们通常是怎么做这样的事情的?我基本上是在创建与文件

  • 本文向大家介绍如何在ABAP中使用表构建结构?,包括了如何在ABAP中使用表构建结构?的使用技巧和注意事项,需要的朋友参考一下 在结构内指定表时的基本规则是,您必须对该字段赋予非唯一约束。 然后在结构定义中使用它:

  • 问题内容: 按照JPA的要求,类应具有默认的(非arg)构造函数,以在从数据库中检索对象时实例化这些对象。 在Kotlin中,可以很方便地在主构造函数中声明属性,如以下示例所示: 但是,当将非arg构造函数声明为辅助构造函数时,它要求传递主要构造函数的值,因此需要一些有效值,例如: 如果属性的类型比just更复杂,并且它们不能为null,那么为它们提供值看起来是非常糟糕的,尤其是当主要构造函数和块

  • 本文向大家介绍数据结构中的时空复杂性,包括了数据结构中的时空复杂性的使用技巧和注意事项,需要的朋友参考一下 算法分析 可以在实施之前和实施之后的两个不同阶段进行算法效率分析,如下 先验分析-这被定义为算法的理论分析。通过假设所有其他因素(例如处理器速度)是恒定的,并且对实现没有影响,来衡量算法的效率。 后验分析-定义为算法的经验分析。所选算法是使用编程语言实现的。接下来,所选算法在目标计算机上执行

  • 我试图利用Querydsl从表中获取一些结果。到目前为止,这是我尝试过的-- 如何在上面的中合并以便只获取第一个结果?

  • 问题内容: 可以说我有一个散列,例如 存储这种数据结构的“通常”方式是什么(或者您不会吗?) 您是否可以直接获得价值(例如,获取哈利:年龄? 一旦存储,您是否可以直接更改子键的值(例如,sally:weight = 100) 问题答案: 存储这种数据结构的“通常”方式是什么(或者您不会吗?) 例如,哈利(Harry)和莎莉(Sally)将分别存储在单独的散列中,其中字段代表其属性,例如年龄和体重。