加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

字典 – 在Groovy中添加两个地图,同时总结公共密钥的值

发布时间:2020-12-14 16:37:25 所属栏目:大数据 来源:网络整理
导读:我在Groovy [a:1,b:2]和[b:1,c:3]中有两张地图,并希望从他们创建第三张地图[a:1,b:3,c:3]。有没有一个Groovy命令呢? 编辑:请注意,如果键是相同的,则第三个地图中的值是前两个地图中的值的总和。 谢谢 解决方法 另一个解决办法是: def m1 =
我在Groovy [a:1,b:2]和[b:1,c:3]中有两张地图,并希望从他们创建第三张地图[a:1,b:3,c:3]。有没有一个Groovy命令呢?

编辑:请注意,如果键是相同的,则第三个地图中的值是前两个地图中的值的总和。

谢谢

解决方法

另一个解决办法是:

def m1 = [ a:1,b:2 ]
def m2 = [ b:1,c:3 ]

def newMap = [m1,m2]*.keySet().flatten().unique().collectEntries {
  [ (it): [m1,m2]*.get( it ).findAll().sum() ]
}

以epidemian’s answer为灵感,您还可以编写一个方法来处理多个地图

def m1 = [a: 1,b: 2]
def m2 = [b: 1,c: 3]

def combine( Map... m ) {
  m.collectMany { it.entrySet() }.inject( [:] ) { result,e ->
    result << [ (e.key):e.value + ( result[ e.key ] ?: 0 ) ]
  }
}

def newMap = combine( m1,m2 )

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读