概述
ranges(范围),lists(列表),maps(映射)
-------------ranges-------------
left..right
(left..right)
(left..<right)
ranges的方法有contains(xx),each{闭包}等 ,除此之外还有lists.grep(ranges)
---------lists与ranges结合产生强大的灵活性----------------
myList=['a','b','c','d','e','f']
assert myList[0..2]==['a','b','c']
assert myList[0,2]==['a','c']
//replace
myList[0..2]=['x','y','z']
assert myList==['x','y','z','d','e','f']
//remove
myList[0..2]=[]
assert myList==['d','e','f']
//insert or replace
myList[2..2]=['f','x']
assert myList==['d','e','f','x']
对于list除了可以正数索引访问,也可以通过负数索引访问
如lists[-1]指的就是数组的最后一个元素
list的findAll方法有一个 闭包的参数,返回的是一个数组。当闭包内结果为true时
如a=['a','b',1]
a.findAll{print it}
结果为:ab1
二分法排序在groovy中的经典案例,同时用到了 递归
def quickSort(list){
if(list.size<=1) return list
def pivot =list[list.size.intdiv(2)]
def left=list.findAll{it<pivot}
def middle=list.findAll{it==pivot}
def right=list.findAll{it>pivot}
return quickSort(left)+middle+quickSort(right)
}
------------------map-----------------------
一般情况下map的key都是string类型,在此我们可以省略单引号。
assert ['a':1]==[a:1]
m=[a:1]
assert m.a==1
assert m.get('a')==1
assert m['a']==1
assert m.b==null
如果key包含像点.这样的特殊字符,需要引号包围
m=['a.b':1]
assert m.'a.b'==1
m.keys
m.keySet
m.entrySet
assert m.any{it.key==xx}
assert m.every{it.value==xx}
any和every返回boolean,any表示只要有符合条件的就返回true,every表示每一个都符合才返回true
map的遍历可以通过each来处理,m.each{entry->entry.key;entry.value}或者m.each{key,value->xxxx}
m.subMap(['key1','key2'])
GString还有tokenize方法,意义为将一段string按照默认分隔符,分割为一个个word
最后
以上就是哭泣路人为你收集整理的Groovy的集合类型的全部内容,希望文章能够帮你解决Groovy的集合类型所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复