我想更新 Groovy 中 map 中的值以满足某些条件。这是我的代码:
def m = [:]
m['a'] = 1
m['b'] = 2
m['d'] = 3
m.findAll { it.value > 1}.each {
it.value = 4
}
println m
但结果如下:
[a:1, b:2, d:3]
有没有办法同时使用findAll和each来做到这一点?或者我必须使用
m.each {if (it.value>1) it.value=4}
最佳答案
根本原因是findAll
返回一个新的Map实例。
所以你可以尝试:
newMap = m.findAll { it.value > 1}.each {
it.value = 4
}
println m //No change
println newMap //This is what you need!
输出为
[a:1, b:2, d:3]
[b:4, d:4]
关于groovy - 使用 findAll 和 groovy 中的 every 更新 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20481006/