我有两张地图
def configmap = [ "env" :["required": ["team" : "k", "test": "sample"], "optional" : ["anotherkey" : ""]]]
def valuesReplacementMap=[ "env.required.team":"s","env.required.test":"new", "env.optional.anotherkey":"newvalue" ]
valuesReplacementMap
具有指向键的路径configmap
和需要更新的新值。
我需要将值更新为configmap
给出的值valuesReplacementMap
这是我的代码,它有效
def m = [ "env" :["required": ["team" : "k", "test": "sample"], "optional" : ["anotherkey" : ""]]]
def valuesReplacementMap=[ "env.required.team":"s",
"env.required.test":"new",
"env.optional.anotherkey":"newvalue" ]
def copyofOrigMap
valuesReplacementMap.each{ key, value->
copyofOrigMap = m
key.tokenize(".").inject{ attr, val ->
if(copyofOrigMap[attr][val] instanceof java.lang.String ){
copyofOrigMap[attr][val] = value
}else
copyofOrigMap = copyofOrigMap[attr]
val
}
}
我的问题是
- 有没有办法避免检查
instanceof java.lang.String
,我这样做是为了看看是否达到叶节点/键 - 有没有更简单的方法来实现这整个功能
我经历了一些较早发布的问题,但没有找到任何优化的方法