gpt4 book ai didi

groovy - 如何从 Map 以及嵌套 Map 中按键搜索值

转载 作者:行者123 更新时间:2023-12-02 04:05:32 27 4
gpt4 key购买 nike

我有一个 Map 如下:-

def map = [
a:"a",
b:[f:"f", g:"g"],
c:"c",
d:"d",
e:[h:"h", i:[j:"j"]],
]

这里我想通过给定的键搜索值。但问题是提供的键是单个唯一键,而不是如下所示的嵌套键层次结构:-

println map.a
println map.j

这里按预期输出:-

a
null

如您所见,我无法获取 j 键的值,我知道是因为该键不存在于根 Map 中,但存在于嵌套 map 。如果我这样做:-

println map.e.i.j

它给了我正确的输出,但我不知道这个键的层次结构。

有没有办法通过只传递精确的键从 map 上面获取值??

注意:- 所有键在提供的Map 中始终是唯一的。

最佳答案

写一个简单的树遍历:

def findDeep(Map m, String key) {
if (m.containsKey(key)) return m[key]
m.findResult { k, v -> v instanceof Map ? findDeep(v, key) : null }
}

给定您的输入 map ,以下测试代码:

('a'..'k').each { key ->
println "${key}: ${findDeep(map, key)}"
}

产生以下结果:

a: a
b: [f:f, g:g]
c: c
d: d
e: [h:h, i:[j:j]]
f: f
g: g
h: h
i: [j:j]
j: j
k: null

关于groovy - 如何从 Map 以及嵌套 Map 中按键搜索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39748965/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com