查找具有"Oranges"键的地图列表中的所有值

Jon*_*lpi 3 maps groovy list

这里仍然是新手,但我试图从我的地图列表中的每个地图获取所有值,其中键的等号为"Oranges"

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

println fruit
Run Code Online (Sandbox Code Playgroud)

所以对于这一点,我希望结果是:[123456, 7890] 但我得到:[[Oranges:123456, Apples:none], [Oranges:7890, Apples:some]]

Wil*_*ill 5

each方法的返回是集合本身.您希望对集合应用某种过滤器,而不是对其每个项目应用.我建议使用findResults,因为它会过滤掉null和空值:

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

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

assert fruit == [123456, 7890]
Run Code Online (Sandbox Code Playgroud)