首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Groovy中循环映射?

在Groovy中循环映射?
EN

Stack Overflow用户
提问于 2012-04-06 07:20:38
回答 4查看 240K关注 0票数 186

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

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-04-06 07:23:30

非常简单,只有一个闭包:

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

map.each{ k, v -> println "${k}:${v}" }
票数 349
EN

Stack Overflow用户

发布于 2013-04-20 03:08:17

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

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

票数 107
EN

Stack Overflow用户

发布于 2012-04-06 14:15:47

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

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10037374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档