Groovy-使用迭代器添加映射项

Groovy-使用迭代器添加映射项,groovy,map,Groovy,Map,请解释为什么这不起作用(JDK7上的Groovy 2.0.5)。我只想从列表中添加一些地图条目 def map = new HashMap<String,String>() map << ["key":"value"] def list = ["a","b","c"] list.each { map << [it:"value"] } println map println map.a println map.containsKey("a") /*

请解释为什么这不起作用(JDK7上的Groovy 2.0.5)。我只想从列表中添加一些地图条目

def map = new HashMap<String,String>()
map << ["key":"value"]

def list = ["a","b","c"]
list.each {
    map << [it:"value"]
}
println map
println map.a
println map.containsKey("a")

/*
[key:value, a:value, b:value, c:value]
null        <- ?
false       <- ?
*/
defmap=newhashmap()
映射

它可以按你的要求工作

如果您这样做:

map << ["$it":"value"]
(为简洁起见,省略了包名)

然后,尝试查找带有字符串的GString键,但失败(请参阅“GString不是字符串”部分)

这项工作:

map << [(""+it):"value"]
map
map << [it:"value"]
map << [(it):"value"]
map << ["$it":"value"]
println map.keySet()*.getClass().name
// prints [GStringImpl, GStringImpl, String, GStringImpl ]
map << [(""+it):"value"]