如何获取键列表或键集的所有值,而不是获取键的映射值。
问问题
6083 次
2 回答
2
def map = [1:"A", 2:"B", 3:"C", 4:"D"]
def keySet = [1, 2, 3]
assert ['A', 'B', 'C'] == keySet.collect{map[it]}
assert ['A', 'B', 'C'] == map.collectMany{k,v -> k in keySet ? [v] : []}
assert ['A', 'B', 'C'] == map.findResults{k,v -> k in keySet ? v : null}
如果我花一些时间来回答这个问题,那么其他方法就很少了。:)
于 2013-10-10T01:15:02.313 回答
1
我认为您正在寻找方便的方法,例如强大的Python
切片。对于采用键列表的groovy
当前方法:subMap
Map m = [one: 1, two: 2, three: 3, four: 4]
m.subMap(['two', 'three'])
// Off course with groovy flexible syntax you may do simple:
m.subMap('two', 'three')
// Or even:
m.subMap 'two', 'three', 'non-existent'
两种变体都将返回['two':2, 'three':3]
。
如果我们请求不存在的密钥也不会出错。
作为参数,您不仅可以提供任何集合List
,例如Range
也可能非常有用。
您可能会在 Klein Ikkink 博客文章中找到一些其他示例:http: //mrhaki.blogspot.ru/2009/10/groovy-goodness-getting-submap-from-map.html
于 2016-09-24T18:06:25.207 回答