不是获取键的映射值,而是获取键列表或键集的所有值。
答案 0 :(得分:1)
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}
如果我花一些时间来解决这个问题,那么其他方法就会很少。 :)
答案 1 :(得分:0)
我认为您正在寻找强大的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