在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 ] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- php – 在Laravel 4中通过迁移脚本创建MySQL视图
- php – 如何检查许多控制器方法正在使用的对象的存在DRY和L
- VB.NET实现的MD5加密算法示例【32位】
- java – Spring Security Kerberos用基本链接
- Perl 脚本执行错误/usr/bin/perl^M: bad interpreter: No s
- delphi – 使用Genericics.Collections.TObjectDictionary的
- 【NLP】Conditional Language Models
- LeetCode题解(Golang实现)--Longest Palindromic Substring
- Groovy学习笔记(5)-XML操作
- perl – 如何安装XML :: Parser没有expat-devel?