在Groovy中通过地图循环?

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

// 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 

有人可以请详细说明如何做到这一点?

封闭很简单:

 def map = [ 'iPhone':'iWebOS', 'Android':'2.3.3', 'Nokia':'Symbian', 'Windows':'WM8' ] map.each{ k, v -> println "${k}:${v}" } 

或者,您可以使用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 */ 

使用for循环而不是each闭包的一个好处是更容易的debugging,因为你不能在each闭包内部(在使用Netbeans时)碰到一个断点。

当使用for循环时,s的值是一个Map.Entry元素,这意味着你可以从s.key获取密钥,并且从s.value

另外一个select:

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