我是靠谱客的博主 奋斗绿茶,这篇文章主要介绍groovy语法基础(二,List&Map),现在分享给大家,希望可以做个参考。

groovy语法基础(二,List&Map)

    • List集合
    • Map集合

List集合

复制代码
1
2
集合的声明及循环遍历
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
println "java 声明集合" List javaList = new ArrayList() javaList.add(1) javaList.add(3) javaList.add(5) println "groovy 声明集合" def groovyList = [1, 3, 5] println "groovyList type is : ${groovyList.class}" def intArray = [1, 3, 5] as int[] println "intArray type is : ${intArray.class}" groovyList << 7 groovyList[4] = 9 println "groovyList[-1] value is ${groovyList[-1]}" println "groovyList[10] value is ${groovyList[10]}" println "groovy 遍历集合 方式1 for-in" for (i in groovyList) { print i + " " } println "ngroovy 遍历集合 方式2 each" def eachList = groovyList.each { print it + " " } eachList[0] = 7 println "ngroovyList content is : "+ groovyList println "eachList content is : "+ eachList println "groovy 遍历集合 方式3 collect" def collectList = groovyList.collect { print it + " " it*2 } collectList[0] = 2 println "ngroovyList content is : "+ groovyList println "collectList content is : "+ collectList

输出结果为

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
java 声明集合 groovy 声明集合 groovyList type is : class java.util.ArrayList intArray type is : class [I groovyList[-1] value is 9 groovyList[10] value is null groovy 遍历集合 方式1 for-in 1 3 5 7 9 groovy 遍历集合 方式2 each 1 3 5 7 9 groovyList content is : [7, 3, 5, 7, 9] eachList content is : [7, 3, 5, 7, 9] groovy 遍历集合 方式3 collect 7 3 5 7 9 groovyList content is : [7, 3, 5, 7, 9] collectList content is : [2, 6, 10, 14, 18]
  • groovy中声明集合可以使用groovy中的语法糖“[]”,默认类型为ArrayList,这个类似java中是数组声明写法,groovy中如声明数组或其它类型,可以选择显示声明或者在变量赋值后用“as”修饰符指定类型;
  • groovy集合添加元素除了java中的add方法外还可以使用“<<”符号,在集合末尾添加一个元素,类似java中集合的add方法,也可用index索引在指定位置添加或修改元素值,此外也可以使用重载运算符"+"/"-"来增加或删除元素,重载运算符操作返回的是个新集合,原集合不发生变化;
  • groovy集合中取值可以使用index索引取值,类似java中的数组取值,不同的是index可以是负数,如-1代表集合倒数第一个元素,而且取值时当index大于集合size时并不会报指针越界异常,只是取出的值是null
  • 集合遍历可以使用for-in方式,同之前在“循环”中讲的一样 in 后跟的是一个Range类型,这里的集合也是一个范围;
  • 集合遍历也可使用each函数,不同与for-in,each调用后会将集合对象本身返回,而另一个集合遍历的方法collect则会返回一个新的集合,该集合中的元素分别为collect闭包中最后一行代码的返回值;
  • 除上面常用的几种方式集合遍历的方法还有.reverseEach即从后往前遍历,.eachWithIndex闭包中返回两个值index和value;

集合中常用方法

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def list = ["a","b","c","a"] def findValue = list.find { it == "b" } println "findValue is : ${findValue}" def findAllValue = list.findAll { it == "a" } println "findAllValue is : ${findAllValue}" def expansionList = list*.toUpperCase() println "expansionList is : ${expansionList}" println "list is : ${list}" def anyCheckResult = list.any { it == 'a' } println "anyCheckResult is : ${anyCheckResult}" def everyCheckResult = list.every { it == 'a' } println "everyCheckResult is : ${everyCheckResult}"
复制代码
1
2
输出结果为
复制代码
1
2
3
4
5
6
7
findValue is : b findAllValue is : [a, a] expansionList is : [A, B, C, A] list is : [a, b, c, a] anyCheckResult is : true everyCheckResult is : false
  • find方法为查找满足闭包条件的元素并返回,只会返回集合中第一个满足条件的元素,如没有则返回null;
  • findAll方法查找满足闭包条件的所有元素并返回,此处返回的是一个满足条件的所有元素组成的集合;
  • list*.为集合的展开操作符,意为对集合中的所有元素进行处理,并返回一个处理后的新集合,原集合值不变;
  • any方法为检查集合中是否有符合闭包条件的元素,如有返回true,否则返回false;
  • every方法为检查集合中元素是否全部符合闭包中的条件,如全符合返回true,否则返回false;
  • 注意:groovy中的 “==”操作符其实是判断值是否相等,是调用了equals方法,而在java中是判断是否是同一个对象,在groovy中判断是否为同一个对象使用.is()方法。

Map集合

集合声明及常用方法

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def groovyMap = [B: "Benz", "L": "Lexus", A: "Audi"] println "groovyMap type is : " + groovyMap.getClass() println "groovyMap.B value is : ${groovyMap.B}" println "groovyMap.'B' value is : ${groovyMap.'B'}" println "groovyMap['B'] value is : ${groovyMap['B']}" groovyMap.F = 'Ferrari' groovyMap << [P:"Porsche"] groovyMap.each { print "${it} " } println "nkey-value接收遍历" groovyMap.each { key , value -> print "key = ${key} , value = ${value}" } println "n展开操作符获取key集合" def getKey = groovyMap*.getKey() println "getKey is : ${getKey}"
复制代码
1
2
输出结果
复制代码
1
2
3
4
5
6
7
8
9
10
groovyMap type is : class java.util.LinkedHashMap groovyMap.B value is : Benz groovyMap.'B' value is : Benz groovyMap['B'] value is : Benz B=Benz L=Lexus A=Audi F=Ferrari P=Porsche key-value接收遍历 key = B , value = Benzkey = L , value = Lexuskey = A , value = Audikey = F , value = Ferrarikey = P , value = Porsche 展开操作符获取key集合 getKey is : [B, L, A, F, P]
  • map声明同list集合类似,元素中的key可以用引号也可不用,map声明默认类型为LinkedHashMap,可通过as指定类型;
  • map取值可以直接通过map.key、map[‘key’]、map.'key’方式均可,map也可通过map.key = value来进行添加/修改元素,同样也可像list一样通过“<<”添加元素;
  • map遍历的各种方法使用同list一样,不同之处是闭包中接收参数是key=value的形式,可以通过声明两个参数分别接收key和value;
  • 可以通过展开操作符map*.getKey()获取key集合的list;
  • 注意:因为map可以通过map.key来获取元素,所以map不可直接通过map.class来获取类型,因此在使用def声明的变量在获取变量类型的时候最好直接使用.getClass()更保险些。

最后

以上就是奋斗绿茶最近收集整理的关于groovy语法基础(二,List&Map)的全部内容,更多相关groovy语法基础(二内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部