从键列表中提取值列表

时间:2013-12-16 12:01:42

标签: map groovy

我的记录为

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

我有一个列表,其中的值是name1,name2等。

我想根据name1拉

列表
[ 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 个答案:

答案 0 :(得分:1)

你根本不需要子图,只有当你想要一次抓住几个键或者你需要结果中的原始键时它才真正有用

尝试:

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创建一个新地图和我的第一个例子的值)