第二个映射值始终为null,即使它打印出1

时间:2012-10-22 08:01:34

标签: groovy map

我有一些代码获取数据,然后按顺序选择它。为此,我使用简单的地图,我以后可以轻松访问(我认为..)。

我在循环中使用以下代码将地图插入另一个名为“companies”的地图:

def x = [:]
x.put(it.category[i], it.amount[i])
companies.put(it.company, x)

我可以肯定地写出结果:[Microsoft:[Food:1], Apple:[Food:1]]

但是,当我即将获得每家公司的食品价值时,它始终是null。这是我用来获取值的代码:

def val = companies.get(it.company).get(key.toString())
def val = companies[it.company][key] // doesn't make a difference

Val始终为null。有人可以帮助和/或解释我有这个错误的原因。我究竟做错了什么?我的意思是,当我打印出来时,我可以清楚地看到1

2 个答案:

答案 0 :(得分:1)

我的猜测是it.category[i]key是完全不同的类型...

你可以尝试的一件事是:

x.put(it.category[i].toString(), it.amount[i])

然后

def val = companies[it.company][key.toString()] // doesn't make a difference

答案 1 :(得分:0)

解决方案很简单,可以将类别设为字符串:

x.put(it.category[i].toString(), it.amount[i])

在那个小修理之后,一切都按预期工作。