【发布时间】:2017-04-04 06:15:09
【问题描述】:
我有编码最佳方式或正确方式以功能方式对列表进行分组/格式化的问题。
示例列表是这个
val list = List (
Map(
"name" -> "AAA",
"id" -> "1",
"category" -> "1",
"sub_category" -> "1"
),
Map(
"name" -> "BBB",
"id" -> "2",
"category" -> "1",
"sub_category" -> "2"
),
Map(
"name" -> "CCC",
"id" -> "3",
"category" -> "1",
"sub_category" -> "2"
),
Map(
"name" -> "DDD",
"id" -> "4",
"category" -> "2",
"sub_category" -> "1"
),
Map(
"name" -> "EEE",
"id" -> "5",
"category" -> "2",
"sub_category" -> "2"
)
)
我想按类别和子类别进行分组。预期的结果是这样的
Map(
2 -> Map(
2 -> MutableList(
Map(name -> EEE, id -> 5, category -> 2, sub_category -> 2)
),
1 -> MutableList(
Map(name -> DDD, id -> 4, category -> 2, sub_category -> 1)
)
),
1 -> Map(
2 -> MutableList(
Map(name -> BBB, id -> 2, category -> 1, sub_category -> 2),
Map(name -> CCC, id -> 3, category -> 1, sub_category -> 2)
),
1 -> MutableList(
Map(name -> AAA, id -> 1, category -> 1, sub_category -> 1)
)
)
)
预期的输出可以包含 List 或 MutableList,我已经完成了这样的代码
val filtered:mutable.Map[Int,mutable.Map[Int,mutable.MutableList[Map[String,String]]]] = mutable.Map()
for(each <- list) {
if(filtered.contains(each("category").toInt)) {
if(filtered(each("category").toInt).contains(each("sub_category").toInt)) {
filtered(each("category").toInt)(each("sub_category").toInt) += each
} else {
filtered(each("category").toInt) += (
each("sub_category").toInt -> mutable.MutableList(each)
)
}
} else {
filtered += (
each("category").toInt -> mutable.Map(each("sub_category").toInt -> mutable.MutableList(each))
)
}
}
我得到了结果,这不是我想要的正确方法来执行此操作的功能方式有人可以帮助我吗?
【问题讨论】:
标签: scala