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

在Groovy中展平嵌套地图

发布时间:2020-12-14 16:20:31 所属栏目:大数据 来源:网络整理
导读:假设我有以下结构: MapString,MapString,Integer nestedMap = ["x": ["a": 2,"b": 3,"c": 4],"y": ["a": 20,"b": 30,"c": 40],"z": ["a": 200,"b": 300,"c": 400]] 我想要扁平化这个结构并得到: ["x-a" : 2,"x-b" : 3,"x-c" : 4,"y-a" : 20,"y-b" : 30,"y-
假设我有以下结构:

Map<String,Map<String,Integer>> nestedMap = [
"x": ["a": 2,"b": 3,"c": 4],"y": ["a": 20,"b": 30,"c": 40],"z": ["a": 200,"b": 300,"c": 400]
]

我想要扁平化这个结构并得到:

[
"x-a" : 2,"x-b" : 3,"x-c" : 4,"y-a" : 20,"y-b" : 30,"y-c" : 40,"z-a" : 200,"z-b" : 300,"z-c" : 400
]

我怎样才能收集/收集电影等?

或者,正如您所看到的,值非常相似.所以我构建这个嵌套的地图结构的方法是通过运行for循环遍历[x,y,z]并将我的地图的enteries设置为等于遍历[a,b,c]和返回一张地图.有没有办法跳过这个嵌套结构并在大地图中功能性地附加元素?

解决方法

关于备选问题(并回应@damahapatro的评论),请考虑以下内容.

给出两个列表:

def list1 = ['x','y','z']
def list2 = ['a','b','c']

和一个给出适当值的函数f,然后我们可以使用inject(它会在迭代组合时累积一个映射(例如[x,a]):

def m = [list1,list2].combinations().inject([:]) { map,combo ->
    assert combo.size() == 2
    def a = combo[0]
    def b = combo[1]
    map["${a}-${b}" as String] = f(a,b)
    map
}

assert m == [
"x-a" : 2,"z-c" : 400
]

(编辑:李大同)

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

    推荐文章
      热点阅读