我有一张地图,
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
答案 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']]