Groovy学习

代码:

结果如下:

说明类或方法内他们指代相同

当出现闭包内写闭包时 this 与 owner 不同

结果:

delegate 对象发生变换时他与owner 不同,默认他是指向owner 的

 结果:

 改变闭包指向设置delegate优先级

 结果:

创建数组:

//数组定义方式
def list = [1,2,3,4,5]
println list.class
println list.size()
//定义数组
def list2 = [1,2,3,5-2,5] as int[]

Groovy的数组添加操作:

//1,添加
list.add(2)
list << -5

println list

def plusList = list + 3
plusList.add(3,28)
println plusList

Groovy的数组添加删除操作:

list.remove(2)//删除下标位置
list.remove((Object) -5)
list.removeElement(2)
println list

list.removeAll({
    it % 2 != 0
})

println list

println list - [2,3]

Groovy的数组添加查找操作:


def findList = [1,-2,3,4,5]
findList.find {
    it % 2 == 0
}

//查找满足条件的第一个
int result = findList.find {
    it % 2 == 0
}
println result

//查找满足条件的数组
int [] result2 = findList.findAll{
    it % 2 == 0
}
println result2

//查找是否存在满足条件的元素
def result3 = findList.any {
    it % 2 == 0
}
println result3

//判断是否全部满足条件
def result4 = findList.every{
    it % 2 == 0
}
println result4

//查找最大值与最小值
def result5 = findList.min {
    return Math.abs(it)
}
println result5

//查找最大值最大的一个

def  result6 = findList.max {
    return Math.abs(it)
}
println result6
//统计功能
def  result7 = findList.count {
    return it > 0
}
println result7

Groovy的数组排序操作:

def sortList = [1,-2,3,-4,5]
def s = sortList.sort()
println s
//数组排序规则
def s1 = sortList.sort {a,b ->
    a == b ? 0 : Math.abs(a) > Math.abs(b) ? 1 : -1
}
println s1
//对象排序规则

def sortStringList = ["aa","b","cccc","ddd","e"]
def s2 = sortStringList.sort {
    it.size()
}
println s2

Map相关代码:

//定义和读取
def colors = [red:'ff0000',green:'00ff00',blue:'0000ff'] as HashMap
println colors['red']
println colors.red

//如果用colors.class 会把class 当成键
println colors.getClass()

//添加普通对象
colors.yellow = 'ffff00'
println colors

//添加集合对象
colors.map = [key1:1,key2:2]
println colors.toMapString()

//遍历
def teacher = [
        1:[number:'001',name:'juck'],
        4:[number:'004',name:'mack'],
        2:[number:'002',name:'lite'],
        3:[number:'003',name:'jid'],
        5:[number:'005',name:'ds'],
        7:[number:'007',name:'jid'],
        8:[number:'008',name:'bk'],
        6:[number:'006',name:'jat'],
]

//键值对方式
teacher.each {
    def key ,def value ->
        println "key = ${key}  ----value = ${value}"
}

//Entry 方式
teacher.each {
    def t ->
        println "key = ${t.key}  ----value = ${t.value}"
}

//带索引的方式
teacher.eachWithIndex {
    def t ,def index ->
        println "index = ${index} ----key = ${t.key}  ----value = ${t.value}"
}

//map的查找

//查找第一条
def entry = teacher.find {
    def t ->
        return  t.value.name == 'bk'
}
println entry

//查找所有满足条件的数据
def entrys = teacher.findAll {
    def t ->
        return t.value.name == 'jid'
}

println entrys

//统计复合条件的个数
def count = teacher.count {
    def t ->
        return t.value.name =='jid'
}
println count

//嵌套查询实现
def number = teacher.findAll {
    def t ->
    return t.value.name == 'jid'
}.collect {
    def t ->
        return t.value.number
}
println number.toListString()

// 分组查询
def group = teacher.groupBy {
    def t ->
    return t.value.name == 'jid' ? 'group1':'group2'
}
println group.toMapString()

//排序 注意:map会返回一个新的map list 是在原来的list 中进行排序的
def sort  = teacher.sort{
    def t1,def t2->
        return t1.key > t2.key ?  1:-1
}
println sort.toMapString()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值