如何在groovy中合并两个地图
发布时间:2020-12-14 16:20:58 所属栏目:大数据 来源:网络整理
导读:题: 如何合并地图,同时总结地图中公共密钥的值. 输入: [a: 10,b:2,c:3] [b:3,c:2,d:5] 产量 [a:10,b:5,c:5,d:5] 扩展问题: 如何通过对2个映射中的公共键的值应用函数(Closure)来合并原始的2个映射.即,而不是简单地总结公共密钥的值,让用户指定要使用的功
题:
如何合并地图,同时总结地图中公共密钥的值. 输入: [a: 10,b:2,c:3] [b:3,c:2,d:5] 产量 [a:10,b:5,c:5,d:5] 扩展问题: 例如:如果用户想要使用’min’函数而不是求和,那么可以指定min来得到[a:10,b:2,c:2,d:5]作为结果. 解决方法
你可以使用inject with?:for for map的值为null:
map1 = [a:10,c:3] map2 = [b:3,d:5] (map1.keySet() + map2.keySet()) .inject([:]) {m,k -> m[k] = (map1[k] ?: 0) + (map2[k] ?: 0); m } 评估为 [a:10,d:5] 或者你可以使用collectEntries(这样的闭包不是那么难看): map1 = [a:10,d:5] (map1.keySet() + map2.keySet()) .collectEntries {[(it) : (map1[it] ?: 0) + (map2[it] ?: 0)]} 为了使这个通用,允许传入一个闭包.但是collectEntries已经允许了这一点,你获得的收益并不高. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |