如何在Grotringy Map中查找GStringImpl类型的键

时间:2017-07-27 15:58:08

标签: groovy

我有这样的地图:

[FOOBAR:["FOOBAR"], \b(De(\w+))\b:["DELI", "DELEGATE"], SSN:["111-55-4444"]]

当我迭代地图并打印类类型的键时,我得到了这个:

myMap.each{ k, v -> println "${k.class}:${v}" }
class java.lang.String:[FOOBAR]
class org.codehaus.groovy.runtime.GStringImpl:[DELI, DELEGATE]
class java.lang.String:[111-55-4444]

问题

如何找到GStringImpl类的密钥?

我尝试了以下但是不起作用:

myMap[/\b(De(\w+))\b/] == ["DELI", "DELEGATE"]
|            |                 |
|            null              false
[FOOBAR:[FOOBAR], \b(De(\w+))\b:[DELI, DELEGATE], SSN:[111-55-4444]]

更新:基于评论

OP希望将变量用作键

1 个答案:

答案 0 :(得分:1)

在这里,它只是微不足道的,你需要把它放在(..)之间。

将其改为:

def myMap = [FOOBAR:["FOOBAR"], \b(De(\w+))\b:["DELI", "DELEGATE"], SSN:["111-55-4444"]]

为:

def userKey = 'key'
def myMap = [FOOBAR:["FOOBAR"], (userKey):["DELI", "DELEGATE"], SSN:["111-55-4444"]]

编辑:更新更多信息。

Groovy接受没有引号和引号的键。所以,如果它是对象,则需要在(...)之间进行包装。它可以是任何物体。