作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图找到两张 map 中的值之间的差异
@Test
void testCollecEntries() {
def mapOne= ["A":900,"B":2000,"C":1500]
def maptwo = ["A":1000,"D":1500,"B":1500]
def balanceMap = maptwo.collectEntries { key, value-> [key:value-mapOne[key]] }
println balanceMap
}
最佳答案
它会抛出 NPE,因为您正在 mapOne 中寻找不可用的键“D”。
您可以通过空安全操作和默认值为 0 来避免这种情况。
def one= [A:900, B:2000, C:1500]
def two = [A:1000, D:1500, B:1500]
def result = two.collectEntries{k,v -> [k, (v - (one[k]?:0))]}
println result
//Print
[A:100, D:1500, B:-500]
def result = two.collectEntries{k,v -> one[k] ? [k, (v - one[k])] : [:]}
//or
//def result = two.collectEntries{k,v -> (k in one.keySet()) ? [k, (v - one[k])] : [:]}
//Print
[A:100, B:-500]
关于groovy - 使用collectEntries在groovy中的两个 map 的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18027995/
我正在尝试使用多个 collectEntries在我的 Groovy 脚本中串联。最好看看代码,现在我有: stage('Test') { // Reading content
为什么这样有效: def m = [[1,11], [2,22], [3,33]] println(m.collectEntries()) 输出:[1:11, 2:22, 3:33] 但这不起作用:
我是一名优秀的程序员,十分优秀!