正如你所說的,將只有一個入口,在這種情況下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'
'.values()'的作品,但不是'.value'或'.value的()' – Anthony
傳播它:'* .value' – Will