Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Map 从键列表中拉出值列表_Map_Groovy - Fatal编程技术网

Map 从键列表中拉出值列表

Map 从键列表中拉出值列表,map,groovy,Map,Groovy,我有一份工作记录 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

我有一份工作记录

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'])等等,但它们都不适合我。

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

尝试:

或者,如果需要具有原始查询键的映射结果:

namesList.each { name ->
    println firstMap.subMap( [ name ] )
}
或者实际上:

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

同样的(即:使用键
name
和我的第一个示例的值创建一个新映射)

Hi Tim,我尝试了最后两种方法,但没有得到结果:-(输出为[name1:null],但当我只检查名称列表中的一个值作为firstMap.subMap([“name1”]),它正确地显示为[“名称1”:[“值1”:10,…]@技术人员,你是在尝试我上面的示例代码吗?还是在尝试用你自己的代码运行上面的代码,并制作你自己的
namesList
Groovy模板字符串?听起来像后者。Groovy字符串不是字符串,所以查找定义为Groovy字符串的键是行不通的。试试
firstMap.subMap([name.toString()])
Yes Tim,感谢您指定……它似乎可以工作……感谢您一如既往地感谢……嗨,Tim,在执行此操作时,当名称列表中有两个键的值与[name1,name1]相同时然后第一个条目被覆盖,我想保留这两个。我怎么做?这意味着你在地图上有两个相同的键,不是吗?这是不可能发生的。。。
namesList.each { name ->
    println( [ (name):firstMap[ name ] ] )
}