如何在Groovy中迭代和访问地图的各个部分

时间:2011-12-02 01:36:36

标签: groovy map for-loop iterator

我制作了一张地图:

def topTen = (1..10).collect { [:].withDefault{[]} }
for (i = 0; i<10; i++) {

topTen[i].put("null", i+1)

}

如何获取此地图中某个条目的第二部分(值),并与另一个地图中另一个条目的另一个(值)进行比较?

2 个答案:

答案 0 :(得分:0)

def topTen = (1..10).collect {
    [:].withDefault{[] } }
for (i = 0; i<10; i++) {
    topTen[i].put("null", i+1)
}
def other=[[null:1],[null:2]]
if(topTen[0]['null']==other[0]['null'])
    println 'equal'

if(topTen[0].get('null')==other[0]['null'])
    println 'equal'
if(topTen[0].'null'==other[0]['null'])
    println 'equal'

答案 1 :(得分:0)

作为Ray的答案的替代方案,如果你想比较第一个和第四个值,你可以这样做:

def (a, b) = topTen[ 0, 3 ].'null'
assert a == b

哪个(显然)是假的,所以会抛出断言错误:

Dec 2, 2011 9:07:22 AM org.codehaus.groovy.runtime.StackTraceUtils sanitize
WARNING: Sanitizing stacktrace:
Assertion failed: 

assert a == b
       | |  |
       1 |  4
         false