gpt4 book ai didi

groovy - 使用collectEntries在groovy中的两个 map 的差异

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

我试图找到两张 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
}

我试图找出 maptwo 中的值与 mapOne 中的值之间的差异。如果条目不存在,我需要忽略。这给了我一个空指针异常。

感谢任何帮助。

最佳答案

它会抛出 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/

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