gpt4 book ai didi

java - 如何在 map 中获取重复的键

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

有时我的java/groovy应用程序表现得很奇怪:有一个不为空并且其中有值的映射,但是当我尝试通过与我记录该映射时看到的完全相同的键获取值时,我变得无效。最奇怪的是日志中的映射有重复的键。

重新启动应用程序可以解决问题,但我感兴趣的是这怎么可能。

我有这个代码:

def mainField = typeSettings?.mainField != null 
? typeSettings?.mainField
: classSettings.mainField
logger.info("${typeSettings}\n ${classSettings}\n ${classSettings.mainField}")

我确信classSettings不是null

这是我在日志中看到的内容:

null
[
iconsField:[],
mainField:[
[
code:portalCard, showTitle:false, pages:[card]
],
[
code:portalAddForm, showTitle:false, pages:[addForm]
]
],
footer:[showNegotDate:true, showPlanDate:true],
footer:[showNegotDate:true, showPlanDate:true]
]
null

但很明显,mainField 存在于 map 中,甚至该 map 中还有两个重复的键 footer

最佳答案

例如GStrings 可以做到这一点(它们打印相同,但散列不同):

groovy:000> [footer: 1, ("${"footer"}"): 2]
===> [footer:1, footer:2]

如果你想调试类似的东西,通常最好使用 .inspect() 而不是仅仅使用 .toString() (在任何情况下可能都没有帮助,但这里实际上给出了一个线索):

groovy:000> [footer: 1, ("${"footer"}"): 2].inspect()
===> ['footer':1, footer:2]

最后,您必须查看类型或哈希码:

groovy:000> [footer: 1, ("${"footer"}"): 2].keySet()*.getClass()
===> [class java.lang.String, class org.codehaus.groovy.runtime.GStringImpl]
groovy:000> [footer: 1, ("${"footer"}"): 2].keySet()*.hashCode()
===> [-1268861541, -1268861504]

关于java - 如何在 map 中获取重复的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57396438/

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