groovy 数据结构-列表

1. 列表定义

在java中我们定义List的方式如下:

def list = new ArrayList() // java 定义方式

在groovy直接使用[]定义List:

def list = [1, 2, 3, 4, 5]
println list.class
println list.size()

输出结果:

class java.util.ArrayList
5

可以看到这样定义的List,groovy初始化的是ArrayList。

groovy中定义数组:

def list = [1, 2, 3, 4, 5] as int[]
int [] array = [1, 2, 3, 4, 5]
println list.class
println list.size()
println array.class
println array.size()

输出结果:

class [I
5
class [I
5

2. 列表操作

2.1 增加

列表增加元素:

def list = [1, 2, 3, 4, 5]
list.add(6)
list.leftShift(7)
list << 8
println list.toListString()
def plusList = list + 9
println plusList.toListString()

输出结果:

[1, 2, 3, 4, 5, 6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8, 9]

2.2 删除

list.remove(7)
list.remove((Object) 7)
list.removeAt(7)
list.removeElement(6)
list.removeAll { return it % 2 == 0 }
println list - [6, 7]
println list.toListString()

输出结果:

class java.util.ArrayList
[1, 3, 5, 9]
[1, 3, 5, 9]

2.3 查找:

可以通过find方法查找符合第一个条件的元素,下面实现查找列表中第一个偶数:

def findList = [6, -3, 9, 2, -7, 1, 5]
int result = findList.find {
    return it % 2 == 0
}
println result

输出结果:

6

通过findAll方式查找所有满足条件的元素:

def findList = [6, -3, 9, 2, -7, 1, 5]
def result = findList.findAll {
    return it % 2 != 0
}
println result.toListString()

输出结果:

[-3, 9, -7, 1, 5]

2.4 判断是否有一个满足条件

通过any()方法判断列表中是否有一个满足条件的原色。

def findList = [6, -3, 9, 2, -7, 1, 5]
def result = findList.any {
    return it % 2 != 0
}
println result

输出结果:

true

2.5 判断是否所有元素都满足条件

通过every()判断列表中所有的元素是否满足条件:

def findList = [6, -3, 9, 2, -7, 1, 5]
def result = findList.every {
    return it % 2 == 0
}
println result

输出结果:

false

2.6 查找最大值和最小值

通过min()和max()查找列表中最小值和最大值:

def findList = [6, -3, 9, 2, -7, 1, 5]
println findList.min()
println findList.max()

输出结果:

-7
9

min()和max()方法也能够传入闭包,查找绝对值最小和最大的例子:

def findList = [6, -3, 9, 2, -7, 1, 5]
println findList.min{return Math.abs(it)}
println findList.max{return Math.abs(it)}

输出结果:

1
9

2.7 统计

可以通过count对列表中的元素进行统计

def findList = [6, -3, 9, 2, -7, 1, 5]
int num = findList.count {return it % 2 == 0}
println num

输出结果:

2

2.8 排序

使用Coloections.sort()会使用默认的规则(从小到大)对列表进行排序。

def sortList = [6, -3, 9, 2, -7, 1, 5]
Collections.sort(sortList)
println sortList

输出结果:

[-7, -3, 1, 2, 5, 6, 9]

Coloections.sort()还有一个重载的函数,我们可以自定义排序规则,下面实现按照绝对值从小到大输出:

def sortList = [6, -3, 9, 2, -7, 1, 5]
Comparator mc = {a, b ->
    a == b ? 0:
            Math.abs(a) < Math.abs(b) ? -1 : 1
}
Collections.sort(sortList, mc)
println sortList

输出结果:

[1, 2, -3, 5, 6, -7, 9]

在groovy中有可以直接调用sort()方法进行排序。

def sortList = [6, -3, 9, 2, -7, 1, 5]
sortList.sort()
println sortList

输出结果:

[-7, -3, 1, 2, 5, 6, 9]

可以在sort方法中传入一个闭包,自定义排序规则。

sortList.sort{a, b ->
    a == b ? 0:
            Math.abs(a) < Math.abs(b) ? 1 : -1
}
println sortList

输出结果:

[9, -7, 6, 5, -3, 2, 1]

对字符串类型列表的排序:

def sortList = ['abc', 'z', 'Hello', 'groovy', 'java']
sortList.sort{
    return it.size()
}
println sortList

输出结果:

[z, abc, java, Hello, groovy]

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值