我试图使此变量GroupsByP
具有某些类型:GroupsByP
是从DB Connection Select/Collect语句中定义的,该语句具有3个字段:2个字符串(p
和id
)和一个INT(order
)。
预期结果应为Map[p,Set[(Id,Order)]]
val GroupsByP = db.pLinkGroups.collect()
.groupBy(_.p)
.map(group => group._1 -> (group._2.map(_.Id -> group._2.map(_.Order)).toSet))
我对此变量的所需类型是
Map[String, Set[(String, Int)]]
,但实际是Map[String, Set[(String, Array[Int])]],
如果我有正确的问题,这应该做到:
val GroupsByP: Map[String, Set[(String, Int)]] = input.collect()
.groupBy(_.p)
.map(group => group._1 -> group._2.map(record => (record.Id, record.Order)).toSet)
您应该将每个记录映射到(Id, Order)
元组中。
非常相似但可能更可读的实现可能是:
val GroupsByP: Map[String, Set[(String, Int)]] = input.collect()
.groupBy(_.p)
.mapValues(_.map(record => (record.Id, record.Order)).toSet)