在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 }