2013-09-11 2 views
-1

мой следующий кодзаводной HashMap - получить количество значений из карты

def traineeDetails = session.traineeDetailsForAuto 

на печать дает:

traineeDetails = [name:[Hus, Vin], email:[[email protected], [email protected]], phone:[9908877654, 9987655432], jobTitle:[SE, ST]] 

def count = traineeDetails.name.size() gives correct value =2 

но когда ключ карта содержит одно значение

def traineeDetails = session.traineeDetailsForAuto 

на печать дает:

traineeDetails = [name:Hus, email:[email protected], phone:9987766543, jobTitle:SE] 

def count= traineeDetails.name.size() gives wrong answer 3 which is the total number of character in name 

, но здесь мне нужно получить общее количество значений, которое держит ключевое имя.

как это сделать?

ответ

2

Если вы собираетесь смешать типы в карте, то вы будете нуждаться, чтобы проверить тип:

def count = traineeDetails.name.with { it instanceof Collection ? it.size() : 1 } 

Используя свои примеры, он отлично работает:

traineeDetails = [name:['Hus', 'Vin'], email:['[email protected]', '[email protected]'], phone:['9908877654', '9987655432'], jobTitle:['SE', 'ST']] 
count = traineeDetails.name.with { it instanceof Collection ? it.size() : 1 } 

assert count == 2 

traineeDetails = [name:'Hus', email:'[email protected]', phone:'9987766543', jobTitle:'SE'] 
count = traineeDetails.name.with { it instanceof Collection ? it.size() : 1 } 

assert count == 1 

Можете ли вы предоставить фактические нерабочие примеры?

+0

не дает правильного ответа .. оба экземпляра коллекции – monda

+0

@monda какой ответ вы получаете? Добавлен код, чтобы доказать, что он работает с примерами, которые вы даете ... Можете ли вы привести пример, который не удается? –

Смежные вопросы