2014-08-29 144 views
7

如何在Groovy中实现每个循环。 我有Java编写的示例代码,但我不知道如何在Groovy中实现此代码groovy中的每个循环

的Java:

for (Object objKey : tmpHM.keySet()) { 
    HashMap objHM = (HashMap) list.get(objKey); 
} 

我读http://groovy.codehaus.org/Looping并试图在我的Java代码转换为Groovy的,但它是不工作。

for (objKey in tmpHM.keySet()) { 
    HashMap objHM = (HashMap) list.get(objKey); 
} 
+1

一般注意事项:如果你明确说你会得到很多更好的答案* *什么不工作(没有“它不工作”)。我刚刚尝试过,并且循环起作用。 – mabi 2014-08-29 14:44:23

回答

18

简单:

tmpHM.each{ key, value -> 
    doSomethingWithKeyAndValue() 
} 
+1

使用闭包并不总是最好的解决方案。 .each()方法不允许中断; – 2016-11-23 11:36:19

+0

这正是'each'和其他所有groovy收集方法的构建方式:它们只是一个一个地循环。如果你需要另一种迭代逻辑,你必须坚持传统的循环 – injecteer 2016-11-24 09:40:56

11

这一个为我工作:

def list = [1,2,3,4] 
for(item in list){ 
    println item 
} 

来源:Wikia

1

您可以使用下面的Groovy代码的地图,foreach循环

def map=[key1:'value1',key2:'value2'] 

for(item in map) 
{ 
log.info item.value // this will print value1 value2 
log.info item // this will print key1=value1 key2=value2 
}