获取嵌套地图中的出现次数

时间:2018-07-24 09:10:24

标签: groovy

如何获取复杂图中的出现次数?

例如

def a = [  CRQ1:[STATUS: "Scheduled"], CRQ1:[STATUS: "Draft"]  ]

我需要在这里获取状态信息

a.CRQ1.STATUS.size() 

预期输出:2

实际输出:5

1 个答案:

答案 0 :(得分:2)

您的地图包含两次相同的密钥:

groovy:000> a = [CRQ1:[STATUS: "Scheduled"], CRQ1:[STATUS: "Draft"]]
===> [CRQ1:[STATUS:Draft]]
groovy:000> a.CRQ1.STATUS.size()
===> 5

(请注意,.size()在这里返回单词 Draft 的字符串长度)

如果您显式地使用传播运算符,并且打算在所有元素上调用函数,则这样的错误更容易捕获。例如。失败了:

groovy:000> a*.CRQ1*.status.size()
ERROR groovy.lang.MissingPropertyException:
No such property: CRQ1 for class: java.util.LinkedHashMap$Entry

所以我您想要一张地图列表:

groovy:000> a = [[CRQ1:[STATUS: "Scheduled"]], [CRQ1:[STATUS: "Draft"]]]
===> [[CRQ1:[STATUS:Scheduled]], [CRQ1:[STATUS:Draft]]]
groovy:000> a.CRQ1.STATUS.size()
===> 2