Algorithm 按特定列分组
scala新手,在地图和列表方面有困难,这与java不同,比如说我有一个scala函数,它提供数据库中的记录,这些记录的格式如下所示Algorithm 按特定列分组,algorithm,scala,Algorithm,Scala,scala新手,在地图和列表方面有困难,这与java不同,比如说我有一个scala函数,它提供数据库中的记录,这些记录的格式如下所示 id owner_id type_id name value 让我们把它命名为 case class Row(id: UUID, ownerId: UUID, typeId: UUID, name: String, value: String) 现在我想写一个函数,将这些行作为输入,在Scala中生成一个映射,如下所示,有人能帮我做一个函数吗 { "own
id owner_id type_id name value
让我们把它命名为
case class Row(id: UUID, ownerId: UUID, typeId: UUID, name: String, value: String)
现在我想写一个函数,将这些行作为输入,在Scala中生成一个映射,如下所示,有人能帮我做一个函数吗
{
"owner": "ownerId",
"configurations": {
"type1": {
"name1": "value1",
"name2": "value2"
},
"type2": {
"name3": "value3",
"name4": "value4"
}
}
}
假设此结果类型
case class Data(owner: UUID, configurations: Map[UUID, Map[String, String]])
我还没有对此进行测试,但这可能会用于获取配置
字段。由于有多行,我不确定如何用一个值填充owner
字段
def convert(rows: Seq[Row]): Data =
Data(owner = ???,
configurations = rows.groupMapReduce(_.typeId)(r => Map(r.name -> r.value))(_ ++ _))
这将使用
Seq
中的函数,该函数将首先根据typeId
对所有行进行分组。然后,它将每一行r
映射到一个map
,其中一个条目name
映射到value
<代码>++将组合所有这些小的映射。这看起来像是一个json对象,而不是映射。