【发布时间】:2014-04-29 09:15:54
【问题描述】:
我有一些嵌套地图,例如:
val map1 = Map("key1"->1, "key2"->Map("x"->List(1,2)))
val map2 = Map("key3"->3, "key2"->Map("y"->List(3,4)))
我想将它们合并以获得类似的结果图;
val res = Map("key1"->1, "key2"->Map("x"->List(1,2), "y"->List(3,4)), "key3"->3)
所以嵌套地图也应该合并。 映射和嵌套映射的类型可以假定为 Map[String, Any]。如果两个映射有冲突的键(例如,同一个键的值不同,除了值是嵌套映射),则视为例外。
有什么优雅的解决方案吗? 谢谢!
【问题讨论】:
-
如果同一个键(如示例中的“key2”)指向一个不是映射的值怎么办?例如。 map1 中的 key1 -> 1 和 map2 中的 key1 -> 2。如果一个值是地图而另一个不是呢?顺便说一句,你这里有一股代码(不好的)气味
-
这个数据结构,嗯……丑哦。我找不到合适的解决方案。我会尝试使用 foldLeft,但在更高的地图中使用 Int 和 Map 作为值...
-
其实那是一些反序列化的 json 文档。