【发布时间】:2013-09-07 19:38:03
【问题描述】:
如果我有一系列具有重复值的映射和如下所示的子映射:
val from = Seq(
Map("aaa" -> Map("bbb" -> Map("ccc" -> List(1)))),
Map("aaa" -> Map("bbb" -> Map("ddd" -> List("a","b")))),
Map("aaa" -> Map("bbb" -> Map("eee" -> List(99,100)))),
Map("aaa" -> Map("bbb" -> Map("ccc" -> List(2,3)))),
Map("aaa" -> Map("bbb" -> Map("ddd" -> List("c","d")))),
Map("aaa" -> Map("bbb" -> Map("eee" -> List(101,102)))),
Map("aaa" -> Map("bbb" -> Map("ccc" -> Map("ddd" -> Map("eee" -> Map("fff" -> Map("ggg" -> List(true, false)))
))))))
Scala 将其转换为如下所示的整理结构的方法是什么:
val to = Seq(
Map("aaa" ->
Map("bbb" -> Map(
"ccc" -> List(1, 2, 3),
"ddd" -> List("a", "b", "c", "d"),
"eee" -> List(99, 100, 101, 102),
"fff" ->
Map("ggg" -> List(true, false))
)
)
)
)
【问题讨论】:
-
示例中给出的结构很奇怪,因为每个地图都只有一个条目(这使得地图过度杀伤,简单的配对就可以完成这项工作)。这是故意的吗?
-
每个地图只有一个条目的原因是因为它代表了这些值的路径。目标是将序列中的所有值整理在一起,使路径分层。 (实际上每个节点可能有多个映射到它的值。)