Groovy编程艺术:探索集合与数组的奥秘

在Groovy的世界中,集合和数组的初始化与操作方式与Java有着显著的不同。本文将带你一步步探索Groovy中集合与数组的初始化、类型转换、元素访问和操作的奥秘。

集合的初始化与类型转换

在Groovy中,初始化列表(List)非常直观,我们可以使用方括号[]来定义一个列表:

List<Integer> list = [1,2,3,4]
println list
println list.size() // 输出列表大小

如果你不想指定具体的类型,可以使用def关键字:

def list = [1,2,3,4]
println list
println list.size()
println list.getClass() // 输出列表的实际类型

Groovy默认创建的是ArrayList,但我们也可以通过指定类型或使用as操作符来创建不同类型的集合:

def list = [1,2,3,4] as LinkedList 
println list
println list.getClass()

def aSet = [1,2,3,4] as HashSet
println aSet
println aSet.getClass()

TreeSet aTreeSet = [3,2,4,1] 
println aTreeSet
println aTreeSet.getClass()

集合的元素访问与修改

Groovy中的集合支持使用下标操作符[]来访问或修改元素,类似于数组:

def aSet = [1,2,3,4]
println aSet[0] // 访问第一个元素
println aSet[1]
println aSet[aSet.size() - 1] // 访问最后一个元素
aSet[0] = 5 // 修改第一个元素
println aSet

此外,Groovy还支持使用负数索引来访问元素:

def aSet = [1,2,3,4]
println aSet[-1] // 访问最后一个元素
aSet[-2] = 5 // 修改倒数第二个元素
println aSet

集合的元素追加

使用左移操作符<<可以向列表追加元素:

def fruits = ["apple", "banana"]
fruits << "orange"
println fruits

多维数组的创建

Groovy不支持使用花括号{}来声明和初始化数组,而应该使用方括号[]

int[] num = [1,2,3,4]
print num

如果不指定类型,Groovy会创建一个列表而不是数组:

num = [1,2,3,4]  // 没有指定类型
println num
println num.getClass()
println num.getClass().getComponentType() // 输出数组元素类型

我们可以使用as操作符来确保创建的是数组:

def arr = [1,2,3] as int[]
println arr
println arr.getClass().isArray() // 检查是否为数组
println arr.getClass().getComponentType() // 输出数组元素类型

多维数组的声明

对于多维数组,Groovy同样使用方括号,并使用as操作符指定类型:

def arr = [[1,2],[10,20]] as long[][]
println arr
println arr.getClass().isArray()
println arr.getClass().getComponentType()
println arr.getClass().getComponentType().getComponentType()

映射的初始化与操作

Groovy中的映射(Map)使用方括号[]来声明,键和值之间用冒号:分隔:

nums = [one: 1, two: 2, three: 3]
println nums.getClass()
println nums

默认情况下,Groovy创建的是LinkedHashMap,我们也可以通过指定类型或使用as操作符来创建不同类型的映射:

TreeMap nums = [one: 1, two: 2, three: 3]
println nums.getClass()
println nums

def food = [breakfast: "egg", lunch: "sushi", dinner: "rice" ] as TreeMap
println food.getClass()
println food

映射的元素访问与修改

使用下标操作符[]可以访问或修改映射中的元素:

HashMap nums = [one: 1, two: 2, three: 3]
println nums['one'] // 读取元素
nums['four'] = 4 // 写入元素
println nums

变量在映射声明中的使用

在映射声明中使用变量作为键时,需要将变量或表达式用括号包围:

def key1= 'one'
def value2= 2
def nums = [(key1): 1, two: value2]
println nums

def key= 1
def str= "wo"
def nums2 = [(key): "one", (key+1): "t${str}"]
println nums2

通过本文的探索,我们可以看到Groovy在集合和数组的处理上提供了非常灵活和强大的功能。希望这些示例能够帮助你更好地理解和使用Groovy中的集合与数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

t0_54coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值