我想知道是否有人可以轻松地将2个深层嵌套的地图合并在一起?
例如,我想得到:
[
"a" : "1",
"animals" : ["cat" : "blue"]
] + [
"b" : 2,
"animals" : ["dog" : "red"]
] == [
"a" : 1,
"b" : 2,
"animals" : [
"cat" : "blue",
"dog" : "red"]
]
有没有一个简单的解决方案?
您可以编写一个Map
使用递归的方法:
Map.metaClass.addNested = { Map rhs ->
def lhs = delegate
rhs.each { k, v -> lhs[k] = lhs[k] in Map ? lhs[k].addNested(v) : v }
lhs
}
def map1 = [
"a" : "1",
"animals" : ["cat" : "blue"]
]
def map2 = [
"b" : 2,
"animals" : ["dog" : "red"]
]
assert map1.addNested( map2 ) == [
a: '1',
animals: [cat: 'blue', dog: 'red'],
b: 2
]
问题内容: 它运行。 它也可以运行。 它再次运行! 但是失败了!? Go中的嵌套地图有问题吗?还是对嵌套地图没有多括号支持? 问题答案: 地图类型的零值为。尚未初始化。您无法在地图中存储值,这是运行时的恐慌。 在上一个示例中,您初始化了(外部)映射,但是它没有条目。当您像那样对它进行索引时,由于尚无键输入,因此对其进行索引将返回用于地图的值类型的零值。因此,尝试分配给运行时恐慌。 您必须先初始化地
问题内容: 我正在尝试创建文件查看器,并且想嵌套子目录。我正在使用ui-router,我希望每个子目录都有其自己的URL和状态。 说我有以下结构: 我希望我的路线是: 我想递归地执行此操作,而不是为每个子目录创建一个新状态 问题答案: 我建议用 一种状态 和 一种参数 - 来做。因为应该尽快定义所有状态,以支持url路由。所有这些唯一的folderPath可能不同,也可能是动态的-在运行时中,在应
问题内容: 我对在groovy中使用排序的映射感兴趣(使用gremlin,这是用于图形数据库的DSL)。 我在这里按排序的地图查看了此博客文章,但我仍然有些困惑。 排序的地图如何声明?它与地图的标准方式有何不同? 使用排序映射时,插入列表中的项目是否会按照插入顺序进行?还是在对已排序的地图中的项目进行排序之前必须先运行? 问题答案: 如果您只是这样声明地图: 然后,您可以看到Groovy默认情况下
问题内容: 我有一个嵌套与包含任何键,或值。我想像下面这样压扁它们。 数据如下: 地图看起来像: 地图的展平应如下所示: 注意: 嵌套数组或映射的级别未知,可能会超过2个级别。 问题答案: 您可以使用递归来展平。每次遇到a时,通过展平来递归; 当您遇到时,请对其进行迭代,然后将索引添加到当前键中。否则,可以简单地设置一个值。在行动中看到下面的代码在这里。
如何使用MapStruct映射嵌套列表? 下面是我的实体类: 我想把它映射到: 现在,我的映射器看起来像: 但它只映射“普通”属性,如Long、intger等,但它避免了嵌套列表。
问题内容: 我目前的理解非常模糊,我倾向于认为map是同步的,而flatMap是异步的,但是我真的无法解决它。 这是一个例子: 我有文件(a ),我想将其复制到服务器上的某些文件中。 本示例摘自一本书。 我可以将所有更改为to ,反之亦然,一切仍然正常。我不知道有什么区别。 问题答案: 用于同步,非阻塞,一对一转换 用于异步(非阻塞)1-to-N转换 区别在方法签名中可见: 取a 并返回a 取a