定義list
groovy:000> ls1 = [1,2,3,4,5,6,7]
===> [1, 2, 3, 4, 5, 6, 7]
list基本操作
1、將元素新增到list尾部
groovy:000> ls1.add(8)
===> true
2、移除List中的元素
根據下標刪除元素
groovy:000> ls1.remove(1)
===> 2 # 將list中2給移除了,下標為1
3、修改list中的元素
# 方式1
groovy:000> ls1.set(0,10) #將索引為0的元素修改為10
===> 1
groovy:000> ls1
===> [10, 3, 4, 5, 6, 7, 8]
# 方式二
# 將List中索引為0的元素更改為10
groovy:000> ls1.putAt(0,10)
4、獲取list中的元素
groovy:000> ls1.get(5) # 獲取索引為5的元素
===> 7
# 獲取List中索引為i的元素,可以使用負數索引
groovy:000> l1[0]
===> a
# 獲取List中索引為i的元素,可以使用負數索引
groovy:000> l1.getAt(0)
===> a
groovy:000> l1.getAt(-1)
===> 8
# 獲取List中索引為i的元素,不能使用負數索引
groovy:000> l1.get(1)
===> b
5、獲取子列表
groovy:000> ls1 = [1,2,3,4,5,6,7]
===> [1, 2, 3, 4, 5, 6, 7] # 重新定義一個ls1
groovy:000> ls1.subList(2,5) # 獲取第 3 到 5 間的元素
===> [3, 4, 5]
6、是否包含元素3
groovy:000> ls1.contains(3)
===> true
7、獲取首個元素和最後一個元素
groovy:000> ls1.first()
===> 1
groovy:000> ls1.last()
===> 7
8、獲取陣列長度
groovy:000> ls1.size()
===> 8
9、判斷list是否為空
groovy:000> ls1.empty
===> false
彈出和壓入元素(push pop)
1、pop 從此列表中刪除最後一個專案
groovy:000> ls1 = [1,2,3,4,5,6,7]
===> [1, 2, 3, 4, 5, 6, 7]
groovy:000> ls1.pop()
===> 7
groovy:000> ls1.pop()
===> 6
groovy:000> ls1
===> [1, 2, 3, 4, 5]
2、push 建立由原始元素和集合中指定的元素組成的新列表
groovy:000> ls1 = [1,2,3,4,5,6,7]
===> [1, 2, 3, 4, 5, 6, 7]
groovy:000> ls1.push(8)
===> true
groovy:000> ls1
===> [1, 2, 3, 4, 5, 6, 7, 8]
獲取陣列型別
groovy:000> ls1.getClass()
===> class java.util.ArrayList
陣列複製
1、l1賦給l2 無論修改l1或者l2 兩者都會變化,底層同一份資料
groovy:000> l1 = ["a","b","c","d","e","f",1,2,3,4,5,6]
===> [a, b, c, d, e, f, 1, 2, 3, 4, 5, 6]
groovy:000> l2 = l1
===> [a, b, c, d, e, f, 1, 2, 3, 4, 5, 6]
陣列迭代
// 定義一個水果類的陣列
fruits = ["apple","Cherry tomato","Cherry","Custard","Dates","Grape"]
// 迭代,取值,不要索引
fruits.each{val -> println val}
// 迭代,取值,帶索引
fruits.eachWithIndex{val,index -> println index + "::" + val}
# 示例如下
// 定義一個水果類的陣列
groovy:000> fruits = ["apple","Cherry tomato","Cherry","Custard","Dates","Grape"]
// 迭代,取值,不要索引
groovy:000> fruits.each{val -> println val}
apple
Cherry tomato
Cherry
Custard
Dates
Grape
// 迭代,取值,帶索引
groovy:000> fruits.eachWithIndex{val,index -> println index + "::" + val}
0::apple
1::Cherry tomato
2::Cherry
3::Custard
4::Dates
5::Grape
List的查詢和過濾
// 定義一個List
groovy:000> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
===> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
// 查詢大於5的元素
groovy:000> numbers.findAll { it > 5 }
===> [6, 7, 8, 9, 10]
// 查詢小於5的元素
groovy:000> numbers.findAll { it < 5 }
===> [1, 2, 3, 4]
// 查詢等於5的元素
groovy:000> numbers.findAll { it == 5 }
===> [5]
// 查詢第一個大於5的元素,這是是find 不是findAll
numbers.find { it > 5 }
===> 6
// 查詢是否存在大於10的元素
numbers.any { it > 10 }
===> false
// 查詢所有的偶數
groovy:000> numbers.findAll { it % 2 == 0 }
===> [2, 4, 6, 8, 10]
索引
groovy:000> l3 = ['a','b','c','d','c']
===> [a, b, c, d, c]
// 返回index
groovy:000> l3.indexOf("c")
===> 2
// index返回-1意味著沒有找到結果
groovy:000> l3.indexOf("z")
===> -1
// 返回最後一個索引
groovy:000> l3.lastIndexOf("c")
===> 4
判斷
List.every{條件}:如果List中每一個元素都符合條件就返回true,否則為false
List.any{條件}:如果List中有一個元素符合條件就返回true,否則為false
groovy:000> l1 = [1,2,3,4,5,6]
===> [1, 2, 3, 4, 5, 6]
// 如果每一個元素都符合條件則返回true
groovy:000> l1.every{it < 7}
===> true
// 如果每一個元素都符合條件則返回true
groovy:000> l1.every{it < 6}
===> false
// any 如果有一個元素符合條件就返回true
groovy:000> l1.any{it > 5}
===> true
// any 如果有一個元素符合條件就返回true
groovy:000> l1.any{it > 3}
===> true