Groovy map:获取键所持有的值的计数

时间:2013-09-11 06:45:16

标签: groovy

我有一张地图,

 def map= [name:[Vin], email:[vin@gmail.com], phone:[9988888888], jobTitle:[SE]]

我想获得一个键所包含的值的总数

为前,

name可以有许多值,例如[name:[Vin,Hus,Rock]如何以编程方式执行此操作?

def count = map.name.size() //gives wrong answer 

2 个答案:

答案 0 :(得分:2)

您可以使用以下代码获取所有密钥的大小列表。

def map= [name:['Vin',''], email:['vin@gmail.com'], phone:['9988888888'], jobTitle:['SE']]
map.collect{it.value.size()}

输出:

 [2, 1, 1, 1]

我认为map.name.size()在groovy中也可以正常工作。

答案 1 :(得分:1)

def map= [name :['Vin', 'abc', 'xyz'], 
          email:['vin@gmail.com'], 
          phone:[9988888888], 
          jobTitle:['SE']]

//Spread operator to get size of each value
assert map.values()*.size == [3, 1, 1, 1]

//Implicit spread
assert map.values().size == [3, 1, 1, 1]

//use size() to get the size of the values collection
assert map.values().size() == 4

//Values
assert map.values() as List == [['Vin', 'abc', 'xyz'], 
                                ['vin@gmail.com'], [9988888888], ['SE']]