递归搜索地图中的值

recursive search of a value in a map

我正在尝试执行以下操作:我有一个嵌套地图(地图中的地图),我想查明这些地图中是否出现选定值(例如 null)。如果这个值确实出现在任何映射中,我希望函数 return 是一个 true 语句。考虑到这一点,我认为递归函数可以解决问题:

public boolean search(def root) {
    found = false
    root.each{ def it ->
        if (it.value instanceof Map) {
            found = search(it.value)
        } else if (it.value == null) {
            println "value found"
            found = true
        }
    }
    return found
}

现在,当使用地图对此进行测试时,即使我的输出表明我的函数正在执行正确的迭代,我也没有得到正确的结果。任何人都可以帮助我为什么会这样。非常感谢!

编辑:这是一张我没有得到预期结果的示例地图。即使有一个值为 null,搜索函数 return 也是一个错误的陈述:

def map = [name: [name: [name:  
               [test: [selection : [pet : null]]],
           age: 42, city: "New York"], 
           age: 42, city: [name: [name: [test:"New York"]]]], 
           age: 42, city: "New York"]
public boolean search(def root) {
    return root.find{
        if (it.value instanceof Map) {
            return search(it.value)
        } else if (it.value == null) {
            return true
        }
        return false
    }
}