groovy数据结构

目录

List

Map

Range 范围

面向对象


List

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

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
}

Range 范围

// 定义范围: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"
    }
}

你可能感兴趣的:(Gradle,gradle)