Groovy代码示例 – 数组的使用
在前面的章节中,已经介绍了groovy的list使用。本章将介绍groovy的数组。虽然数组和列表看上去很相似,但是还是有一些根本的不同。例如,数组的大小是固定的而list的大小是动态的。这意味着列表中可以存放任意多个对象,而对于数组,如果你存的对象个数多于数组的长度,将会抛出:MissingMethodException
或ArrayIndexOutOfBoundsException
。我们看一下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全栈技术分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论