2017-07-31 58 views
3

這裏還是一個新手,但我試圖從我的地圖列表中的每個地圖獲得所有值,這些值都等於「桔子」查找具有關鍵「桔子」的地圖列表中的所有值

def resultSet = [ 
["Oranges":123456, "Apples": "none"],["Oranges":7890, "Apples": "some"] 
] 
def fruit = resultSet.each{ 
    it.findAll{key, value -> key == "Oranges"}.value 
} 

println fruit 

所以對於這一點,我希望的結果是:[123456, 7890] 但我得到:[[Oranges:123456, Apples:none], [Oranges:7890, Apples:some]]

回答

5

each方法的返回是集合本身。您想要對集合應用某種過濾器,而不是對每個項目應用某種過濾器。我建議使用findResults,因爲它會過濾掉空值和空值:

def resultSet = [ 
    ["Oranges":123456, "Apples": "none"], 
    ["Oranges":7890, "Apples": "some"] 
] 

def fruit = resultSet.findResults { it.Oranges?.value } 

assert fruit == [123456, 7890] 
+0

Thanks @Will!我想出於某種原因,每個人都會迭代我列表中的每張地圖。沒有注意到它看到它作爲一個集合 – JonathanScialpi

+0

很高興幫助:-) – Will