如果我有一系列具有重复值的地图和子地图,如下所示:
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转换为如下所示的整理结构的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))
)
)
)
)
答案 0 :(得分:4)
此结构称为Trie或“前缀树”。 github(https://gist.github.com/timcowlishaw/1363652)有一个要点,它实现了这个概念。
<强>更新强>
实际转换算法必然(IMHO)将嵌套映射转换回键字符串。然后构建Trie就像在提供的要点中放置put
的所有元素一样简单。所以我认为最好在程序中稍早使用该结构。