我是靠谱客的博主 火星上手机,最近开发中收集的这篇文章主要介绍groovy 数据结构-列表1. 列表定义2. 列表操作,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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]

 

最后

以上就是火星上手机为你收集整理的groovy 数据结构-列表1. 列表定义2. 列表操作的全部内容,希望文章能够帮你解决groovy 数据结构-列表1. 列表定义2. 列表操作所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部