Groovy代码示例 – 数组的使用

在前面的章节中,已经介绍了groovy的list使用。本章将介绍groovy的数组。虽然数组和列表看上去很相似,但是还是有一些根本的不同。例如,数组的大小是固定的而list的大小是动态的。这意味着列表中可以存放任意多个对象,而对于数组,如果你存的对象个数多于数组的长度,将会抛出:MissingMethodExceptionArrayIndexOutOfBoundsException。我们看一下groovy数组具体的应用。

1、数组定义:

def birds = new String[3]
birds[0] = "Parrot"
birds.putAt(1, "Cockatiel")
birds[2] = "Pigeon"

println birds // [Parrot, Cockatiel, Pigeon]

def birdArr = ["Parrot", "Cockatiel", "Pigeon"] as String[] //显式声明为数组
println birdArr // [Parrot, Cockatiel, Pigeon]

上述例子中,你可以声明数组的长度,还可以像java中那样为数组赋值。

第二个例子中,直接使用初始值声明数组并显式的声明为字符串数组。

2、访问数组对象

在groovy中,你可以像java中那样访问数组arr[index]或是getAt(index)方式访问数组元素。

def birds = ["Parrot", "Cockatiel", "Pigeon"] as String[]

println birds[0] // Parrot
println birds[2] // Pigeon

println birds.getAt(1) // Cockatiel

println birds[-1] // Pigeon
println birds[-3] // Parrot

上述例子中数组是可以支持索引为负数,当索引号为负数时,数组是从尾部开始计数的,从-1开始计数,-1表示数组中最后一个元素,同理-3表示倒数第三个元素。

3、数组访问异常

正如前面所说,如果你试图往数组中增加元素并超过数组长度的话,将会抛出异常。

def birds = ["Parrot", "Cockatiel", "Pigeon"] as String[]

birds << "Eagle" // MissingMethodException

birds.putAt(3, "Owl") // ArrayIndexOutOfBoundsException

<<是列表list的方法,当我们在数组上使用<<方法时,将会抛出MissingMethodException。如果访问数组对象超过数组的大小时会抛出ArrayIndexOutOfBounddException

4、数组长度

Java中,可以使用size()方法获取list的长度,使用length属性获取数组的长度。在groovy中,你既可以使用size()方法也可以使用length属性获取数组的长度。

def birds = ["Parrot", "Cockatiel", "Pigeon"] as String[]

println birds.length // 3

println birds.size() // 3

5、数组最大、最小值

比如说吧,你有一个数字数组。你可以通过数组上的min()和max()方法获取数组中的最小、最大值。

def numbers = [32, 44, 12, 9, 100, 180]
println numbers.max() // 180
println numbers.min() // 9

def birds = ["Parrot", "Cockatiel", "Pigeon"] as String[]
println birds.max { it.size() } // Cockatiel
println birds.min { it.size() } // Parrot

前面一段很容易理解。对于后面的一段,max和min方法其实作用于数组中字符串的长度。这里使用了闭包的方式,it代表的是数组中的对象。

6、删除数组中元素

groovy中删除数组元素不是真正意义上的删除,其实是为数组重新赋值另外一个已经删除元素的数组。

def birds = ["Parrot", "Cockatiel", "Pigeon"] as String[]

def birdsWithoutParrot = birds - "Parrot"

println birds // [Parrot, Cockatiel, Pigeon]
println birdsWithoutParrot // [Cockatiel, Pigeon]

上述例子中,你可以通过“减法”操作从数组中移除一个元素并赋值给新的数组。但是,老的数组其实并没有变化。

7、数组排序

如果你正在使用集合,可能经常需要排序。比如,你可以对数组反向排序或是按照指定规则排序。

def birds = ["Parrot", "Cockatiel", "Pigeon"] as String[]
println birds.reverse() // [Pigeon, Cockatiel, Parrot]
println birds.sort() // [Cockatiel, Parrot, Pigeon]

上述例子中,分别对数组采用了反序以及按照字母顺序排序。

8、数组查找

你可以在数组中查找数据,在下面的例子中我们把数组中每个字符串反转,并且通过正则表达式查找数组。

def birds = ["Parrot", "Cockatiel", "Pigeon"] as String[]

def revertedBirds = birds.collect { it.reverse() }
println revertedBirds // [torraP, leitakcoC, noegiP]

def founded = birds.find { it =~ /Cockatiel/ }
println founded // Cockatiel

我们使用collect方法遍历数组并反转字符串并使用find方法查找数组内容。

9、数组转换

在groovy中可以很方便的将数组转换为列表对象。

def birds = ["Parrot", "Cockatiel", "Pigeon"] as String[]
def birdList = birds.toList()
println birdList.class.name // java.util.ArrayList

def birdsAgain = birdList as String[]
println birdsAgain.class.name // [Ljava.lang.String;

上述例子中我们通过toList方法将数组转换成为列表对象,同时,我们也可以很方便的将列表转换成数组。

总的说来,数组和列表是很相似的,最大的差别就是数组的大小是固定的而列表的大小是动态扩展的。

版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/05/06/groovy-code-example-usage-of-array/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
Groovy代码示例 – 数组的使用
在前面的章节中,已经介绍了groovy的list使用。本章将介绍groovy的数组。虽然数组和列表看上去很相似,但是还是有一些根本的不同。例如,数组的大小是固定的而……
<<上一篇
下一篇>>
文章目录
关闭
目 录