2017-07-31 61 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