加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Groovy的集合类型

发布时间:2020-12-14 17:03:49 所属栏目:大数据 来源:网络整理
导读:ranges(范围),lists(列表),maps(映射) ? -------------ranges------------- left..right (left..right) (left..right) ? ranges的方法有contains(xx),each{闭包}等,除此之外还有lists.grep(ranges) ? ---------lists与ranges结合产生强大的灵活性---

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','c']

assert myList[0,2]==['a','c']

?

//replace

myList[0..2]=['x','y','z']

assert myList==['x','z','f']

?

//remove

myList[0..2]=[]

assert myList==['d','f']

//insert or replace

myList[2..2]=['f','x']

assert myList==['d','f','x']

?

对于list除了可以正数索引访问,也可以通过负数索引访问

如lists[-1]指的就是数组的最后一个元素

?

list的findAll方法有一个 闭包的参数,返回的是一个数组。当闭包内结果为true时

如a=['a',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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读