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
}