我是靠谱客的博主 哭泣路人,最近开发中收集的这篇文章主要介绍Groovy的集合类型,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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的集合类型所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部