在 Groovy 中循环使用 Map?

我在 Groovy 中有一个非常简单的任务,但似乎无法让它工作。我只是试图在 groovy 中循环一个 map 对象并打印出键和值,但是这段代码不起作用。

// A simple map
def map = [
iPhone : 'iWebOS',
Android: '2.3.3',
Nokia  : 'Symbian',
Windows: 'WM8'
]


// Print the values
for (s in map) {
println s + ": " + map[s]
}

我试图让输出看起来像这样:

iPhone: iWebOS
Android: 2.3.3
Nokia: Symbian
Windows: WM8

有人能详细说明一下怎么做吗?

259487 次浏览

结局很简单:

def map = [
'iPhone':'iWebOS',
'Android':'2.3.3',
'Nokia':'Symbian',
'Windows':'WM8'
]


map.each{ k, v -> println "${k}:${v}" }

当使用 for 循环时,s 的值是一个 Map。元素,这意味着您可以从 s.key 获取键,从 s.value 获取值

或者你也可以使用 for循环,如 Groovy Docs所示:

def map = ['a':1, 'b':2, 'c':3]
for ( e in map ) {
print "key = ${e.key}, value = ${e.value}"
}


/*
Result:
key = a, value = 1
key = b, value = 2
key = c, value = 3
*/

与使用 each闭包相比,使用 for循环的一个好处是更容易调试,因为您不能在 each闭包内触及断点(使用 Netbeans 时)。

另一个选择:

def map = ['a':1, 'b':2, 'c':3]
map.each{
println it.key +" "+ it.value
}