gpt4 book ai didi

java - Groovy Array.addAll 方法从原始数组中删除元素

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

好吧,我确信我在这里做错了什么。

result = []
for (aMp in arMap) {
println("0 " + result)
println("1 " + aMp)
println("2 " + delegate.findSingleMap(aMp))
result.addAll(delegate.findSingleMap(aMp))
println "3 " + result
}
return result

println结果如下:(我在arMap中有2个元素,所以它打印了4个值2次)

0 []
1 [ID:XXX, Type:4]
2 [[First:21/Nov/2013, Type:4, error code:SXR07, ID:XXX, Test ID:5]]
3 [[First:21/Nov/2013, Type:4, error code:SXR07, ID:XXX, Test ID:5]]
0 [[First:21/Nov/2013, Type:4, error code:SXR07, ID:XXX, Test ID:5]]
1 [ID:YYY, Type:4]
2 [[First:12/Oct/2012, Type:4, error code:SXR07, ID:YYY, Test ID:6]]
3 [[First:12/Oct/2012, Type:4, error code:SXR07, ID:YYY, Test ID:6]]

正如您所看到的,findSingleMap 函数工作正常,但是当我第二次使用 AddAll 时,我的结果数组丢失了值 XXX。

我做错了什么?

最佳答案

正如OP int注释中所述,方法findSingleMap修改(全局)result变量。

for (aEl in map) { 
result = result.findAll { it[aEl.key] == aEl.value }
}

return result

不在变量前面编写 def 会将其声明为全局变量(在简单的脚本中),这可能会导致像这样的奇怪行为。所以不要这样做,除非你必须编写高尔夫代码。

关于java - Groovy Array.addAll 方法从原始数组中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25932063/

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