1.最常規的for循環
for (def i = 0; i < 5; i++) { //這個i需要聲明println "遍歷輸出${i}"
}
2.while循環
def j = 0
while (j < 5) {println "遍歷輸出 ${j}"j++
}
3.for in 循環
def list = [0, 1, 2, 3, 4]
//這個l無需聲明
for (l in list) { println "遍歷輸出 ${l}"
}
//這個k無需聲明
for (k in 0..<5) { //0..<5 表示一個范圍(Range)println "遍歷輸出 ${k}"
}
4.groovy中常規的each循環
list.each {println "遍歷輸出 ${it}"
}
在each中使用return,將達到continue的效果。
list.each {if (it > 2) {return}println "遍歷輸出 ${it}"
}//log
遍歷輸出 0
遍歷輸出 1
遍歷輸出 2
5.調用的是Java的Iterable類中的forEach方法
def list = [0, 1, 2, 3, 4]
list.forEach {println "遍歷輸出 ${it}"
}
(0..<5).forEach {println "遍歷輸出 ${it}"
}
6.返回滿足條件的第一個元素
閉包中的返回值要boolean類型
println "返回滿足條件的第一個元素:" + list.find {it > 2
}
在find中使用return true,將達到break的效果。其實也很好理解,find本身就是在找返回值為true的第一個元素,所以return true就相當于提前找到了
println "返回滿足條件的第一個元素:" + list.find {if (it > 1) {return true}it > 2
}//log
返回滿足條件的第一個元素:2
7.返回滿足條件的集合
閉包中的返回值要boolean類型
println "返回滿足條件的集合:" + list.findAll {it > 2
}
8.判斷并返回是否有元素滿足條件
閉包中的返回值要boolean類型
println "是否有元素滿足條件:" + list.any {it > 2
}
9.判斷并返回是否所有元素都滿足條件
閉包中的返回值要boolean類型
println "是否所有元素都滿足條件:" + list.every() {it > 2
}
10.對集合中的元素進行處理,并返回處理后的集合
println "所有元素進行處理,并返回處理后的集合:" + list.collect {it * 10
}