正如你所说,只有一个条目,在这种情况下findResult
将是你最好的选择
mymap.findResult{k, v -> if(k.startsWith('FO')) return v}
此外,如果你想让它为空安全,你可以将默认值设置为
mymap.findResult('default'){k, v -> if(k.startsWith('FO')) return v}
如果您想收集所有这些值作为您需要的列表collectMany
:
mymap.collectMany{k, v -> k.startsWith('FO') ? [v] : []}
样本:
def mymap = ["FOO": "BAR", "something": "else", "FOOD": "Bread", "FOOL": "John Doe"]
assert mymap.findResult{k, v -> if(k.startsWith('FO')) return v} == 'BAR'
assert mymap.collectMany{k, v -> k.startsWith('FO') ? [v] : []} == ['BAR', 'Bread', 'John Doe']
assert mymap.findResult('default'){k, v -> if(k.startsWith('BLAH')) return v} == 'default'