2013-12-16 3 views
1

У меня есть запись, какпотянув список значений из списка ключей

firstMap = [ name1:[ value1:10, value2:'name1', value3:150, value4:20 ], 
      name2:[ value1:10, value2:'name2', value3:150, value4:20 ] ] 

У меня есть список, где значения являются name1, name2 и т.д.

Я хочу, чтобы вытащить список в зависимости на имя1 как

[ name1:[ value1:10, value2:'name1', value3:150, value4:20 ] 

firstMap.subMap(["name1"]), работал для меня, но у меня есть список и перекручивание список мне нужно вытащить значения

namesList.each{record -> 
    newMap = firstmap.subMap(record) 
} 

Я попробовал subMap ([offer]), subMap (["offer"]), subMap (["offer? .stringValue()"]), subMap (['offer']) и т. Д. Но никто из них не работает для меня.

ответ

1

Вам не нужно подкарта вообще, это только очень полезно, когда вы хотите, чтобы захватить несколько клавиш одновременно, или если вам нужен оригинальный ключ в результате

Try:

firstMap = [ name1:[ value1:10, value2:'name1', value3:150, value4:20 ], 
      name2:[ value1:10, value2:'name2', value3:150, value4:20 ] ] 

def namesList = [ 'name1', 'name2' ] 

namesList.each { name -> 
    println firstMap[ name ] 
} 

Или, если вам нужен результат карты с оригинальным ключом запроса:

namesList.each { name -> 
    println firstMap.subMap([ name ]) 
} 

Или действительно:

namesList.each { name -> 
    println([ (name):firstMap[ name ] ]) 
} 

даст вам то же самое (т.е. создать новую карту с ключом name и значение моего первого примера)

+0

Привет Тим, я попробовал последние два пути, но его не приносит мне результат: - (вывод [name1: null], но когда я просто проверяю его на одно из значений namesList как firstMap.subMap (["name1"]), он корректно отображается как ["name1": ["val1": 10, ....]] – Techie

+0

@Techie Вы пытаетесь выполнить мой пример кода выше? Или вы пытаетесь запустить выше с помощью своего собственного кода и создать свой собственный «namesList» Groovy Templated Strings? Похоже на последнее. Groovy Strings - это не Strings_, поэтому поиск ключей, определенных как Strings with Groovy Strings, не будет работать. Попробуйте 'firstMap.subMap ([name.toString()])' –

+0

Да, Тим, спасибо за указание, что ... кажется, работает ... спасибо тонне, как всегда ... – Techie

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