目录
List
Map
Range 范围
面向对象
list 的定义
// groovy定义list的方式(和java中数组的方式相同,但它是ArrayList)
def list = [1,2,3,4,5]
数组的定义
// 数组的定义,使用 as 关键字把 list转成 array
def array = [1,2,3,4,5] as int[]
list 的排序
def sortList = [5,-3,2,4,1]
// 正序排序
println sortList.sort()
// 绝对值从大到小排序
println sortList.sort {a,b -> a==b?0 : Math.abs(a) < Math.abs(b) ? 1:-1}
list 的查找
def findList = [5,-3,2,4,1,60,79]
// 查找 第一个符合条件的
println findList.find{return it%2 == 0}
// 查找 所有符合条件的
println findList.findAll { return it%2==0}
// 判断 是否存在奇数
println findList.any{return it%2 !=0}
// 判断 所有元素是否都是偶数
println findList.every {return it%2 == 0}
// 查找 最大值
println findList.max()
// 查找 最小值
println findList.min()
// 统计 符合条件的个数
println findList.count {return it >= 60}
map 的定义
def detailMap = [name:'张三', age:18]
map 查询
def detailMap = [name:'张三', age:18]
// 元素的查找
println detailMap.name
println detailMap['name']
map 添加
def detailMap = [name:'张三', age:18]
// 添加
detailMap.sex = 1
println detailMap.toMapString()
map 操作
def userMap = [
1: [name:'张三', age: 15],
2: [name:'李四', age: 23],
3: [name:'王五', age: 20]
]
// 遍历map
userMap.each {def user->
println user.key + " = " + user.value
}
// 带索引的遍历
userMap.eachWithIndex {def user, int index->
println index + " = " +user.key + " = " + user.value
}
// key value 遍历
userMap.eachWithIndex { key, value, index ->
println index + " = " +key + " = " + value
}
// 查找 第一个复合条件的
println userMap.find { def user ->
return user.value.age >= 20
}
// 查找 所有复合条件的
println userMap.findAll{ def user ->
return user.value.age >= 20
}
// 统计符合条件的个数
println userMap.count { def user ->
return user.value.age >= 20
}
// 查询符合的对象
println userMap.findAll {def user ->
return user.value.age >= 20
}.collect {return it.value.name}
// 分组
println userMap.groupBy {def user ->
return user.value.age >= 18 ? "成年" : "未成年"
}
// 排序
println userMap.sort{def user1, def user2->
Number age1 = user1.value.age
Number age2 = user2.value.age
return age1 == age2 ? 0 : age1 < age2 ? -1 : 1
}
// 定义范围:1到10
def range = 1..10
// 通过下标获取范围值
println range[2]
// 获取范围第一个值
println range.from
// 获取范围最后一个值
println range.to
// 判断范围中是否包含指定的值
println range.contains(6)
// 使用闭包遍历范围
range.each {
println it
}
// 使用 for 遍历范围
for (i in range) {
println i
}
// 定义一个类,groovy中默认都是 public
class User {
// 定义变量,不用带分号
String name
Integer age
// 定义方法
def incAge(Integer years){
this.name +=years
}
}
// 创建对象的实例
def user = new User(name: '张三')
// 定义接口,groovy中的接口不允许定义非public类型的方法
interface Action {
void eat()
void play()
}
// 作用像 java中的抽象类和接口的结合
trait DefaultAction {
// 定义抽象方法,如果没有实现就需要使用抽象关键字 abstract
abstract void eat()
// 默认的方法实现,有实现不需要加abstract关键字
void paly() {
println "aaa"
}
}