首页 文章

在Groovy中循环浏览 Map ?

提问于
浏览
152

我有一个非常简单的任务,我想在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

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

4 回答

  • 17

    闭合非常简单:

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

    或者,您可以使用Groovy Docs中所示的 for 循环:

    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 闭包的一个好处是更容易调试,因为你无法在 each 闭包内(当使用Netbeans时)达到断点 .

  • 12

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

  • 87

    另外一个选项:

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

相关问题