參考:Groovy入門經(jīng)典書籍
列表(list)映射(map)范圍(range)為引用其他對(duì)象的集合糙置;
列表
例子 | 說(shuō)明 |
---|---|
[1,2,3,4] | 整形列表 |
['better','Joy',124] | 不同類型的列表 |
['better','Joy',[124,11,33]] | 不同類型的列表 |
用來(lái)存儲(chǔ)數(shù)據(jù)項(xiàng)的有序集合,并且集合可以嵌套摩钙,而且可以包含不同類型的數(shù)據(jù)項(xiàng)罢低;
例子 | 說(shuō)明 |
---|---|
[1,2,3,4] | 整形列表 |
['better','Joy',124] | 不同類型的列表 |
['better','Joy',[124,11,33]] | 不同類型的列表 |
列表操作相關(guān)方法
// 取值操作
def numbers = [1,2,3,4,5,6]
println(numbers[0]) // 1
println(numbers[-1]) // 6
println(numbers[1..4]) // 返回列表[2,3,4,5]
println(numbers[1,4]) // 返回列表[2,5]
// 賦值操作
numbers[0] = ["better", "a"]
println(numbers) // [[better, a], 2, 3, 4, 5, 6]
numbers << 8 // leftShift運(yùn)算符
println(numbers) // [[better, a], 2, 3, 4, 5, 6, 8]
// 其他操作
println(numbers.getClass().getName()) // 默認(rèn)ArrayList實(shí)例
// as 強(qiáng)制使用LinkedList
println(([11,22,33] as LinkedList).getClass().getName())
映射
例子 | 說(shuō)明 |
---|---|
['better':'zhao', 'joy':'chen'] | 名姓集合 |
['odd':[2,4,6,8], 'even':[1,3,5,7] | 字符串型關(guān)鍵字與列表 |
[:] | 空映射 |
類似于Map。
例子 | 說(shuō)明 |
---|---|
['better':'zhao', 'joy':'chen'] | 名姓集合 |
['odd':[2,4,6,8], 'even':[1,3,5,7] | 字符串型關(guān)鍵字與列表 |
[:] | 空映射 |
映射操作相關(guān)方法
def names = ['better':'zhao', 'joy':'chen']
// 取值
println(names['better']) // zhao
println(names.get('better')) // zhao
// 賦值
names['better'] = [1,2,3,4]
println(names) // [better:[1, 2, 3, 4], joy:chen]
println(names.keySet()) // [better, joy]
println(names.values()) // [[1, 2, 3, 4], chen]
范圍
表示序列值得一種簡(jiǎn)單方法胖笛,通過(guò) start end 來(lái)確定邊界网持;
println(1..5) // [1,2,3,4,5]
println(1..<5) // [1, 2, 3, 4]
println(5..1) // [5,4,3,2,1]
println('A'..'D') // [A,B,C,D]
println((1..5).getTo()) //5
println((1..5).getFrom()) //5
println((1..5).getClass().getName()) // groovy.lang.IntRange
方法
方法用 def 來(lái)定義
def methodName(param1,param2,param3) {
}
默認(rèn)參數(shù)
可使用默認(rèn)參數(shù),來(lái)解決重載方法過(guò)多問(wèn)題长踊,如:
@Test
void test9() {
println(chengfang(4))
}
private def chengfang(value, time = 2) {
def result = value
for (i in 1..<time) {
result *= result
}
return result // 返回值功舀, true 可省略,最后一行表示返回
}
動(dòng)態(tài)類型與靜態(tài)類型方法
方法的定義中身弊,使用動(dòng)態(tài)的返回類型辟汰,與動(dòng)態(tài)的參數(shù),如下:
// 動(dòng)態(tài)類型方法阱佛,返回值帖汞,參數(shù)都是動(dòng)態(tài)指定的
def times(x, y) {
return x * y
}
@org.junit.Test
void test1() {
println("3 * 4 = ${times(3, 4)}")
println("better * 4 = ${times('better', 4)}") // 連續(xù)4個(gè)better
}
// 靜態(tài)類型方法(指定了方法的返回類型 int ,參數(shù)的類型)
// 上面test1方法中第二條語(yǔ)句凑术,運(yùn)行會(huì)產(chǎn)生異常
int times2(int x, int y) {
return x * y
}