在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中的集合与数组。