微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

初窥groovy之集合1

    最近学习了下groovy这门语言,感觉很犀利很简洁。groovy优缺点就不赘述了,有兴趣的google下。下面看下groovy对list的操作,也许能勾起你的兴趣。

1、创建list

static void main(args){
    def list=[1,2,3,5,8,2]
    println list
}

 没错,不用new创建List,直接使用字面量赋值,简化了main方法输出语句。

2、数组与集合转化

//定义string数组
		def strs=[1,1,6] as String[]
		//定义集合
		def list =[1,24,67,4]
		//数组转集合
		list=strs.toList();
		//集合转数组,集合可以像数组一样取值
		strs=list as String[]

这里的as作为强转的关键字,据说是输入as 比shift+括号更快,考虑得很贴心。当然,我们甚至可以省略as关键字,前提是定义的变量需要明确的类型。

3、一些集合操作

添加元素:

println list<<213

结果:[1,213] 

结论:我们可以使用 " << " 符号给集合添加元素

遍历集合:

list.each{
    print it
}

结果:1  2  3  5  5  8  2  213

结论:没错,不用for循环,直接使用each加上一对大括号,一对大括号代表闭包(暂时先这样用),it为其内部隐藏的游标,再加上简化版的控制台输出函数,看起来是不是非常简洁?

取集合元素:

println list[-1]
println list[2]

结果:213    3

结论:-1 代表去集合倒数第一个元素,集合也可以向数组一样取值

其他操作:

println list.join("-")

结果:1-2-3-5-5-8-2-213

结论:join 方法可以给元素间添加内容

def list2=[14,14,5]
def lsit3=[list,list2].flatten();
println lsit3

结果:[1,213,5]

 结论:合并两个集合,生成新集合

def list4=list-list2
println list4

 结果:[1,213]

结论:在集合一中去得集合二包含的元素,如果集合一中有重复的元素包含在集合二中,那么都将被去掉。当然,有减法肯定有加法,加法与flatten类似。

def list5=[1,5]
println list5.unique() //去重

结果:[1,5]

println list.reverse() //反转

结果:[213,1]

println list.sort();//升序排序

结果:[1,213]

引申:当然,我们可以实现降序排序,实现乱序,这需要我们通过闭包重写sort方法即可,具体在总结闭包的时候完善。

println list.count(5) //计算包含元素的个数
println list.indexOf(2) //取下标为2的元素
println list5.disjoint([1,3]) //判断是否有交集,有则返回false
println list.sum() //求和,当然也可以通过闭包做更复杂的求和
println list.max() //求最大值
println list.min() //求最小值

 

以上总结部分集合操作的方法。虽然这些方法java中也有实现,但是,从代码的简洁和可读性来看,我更喜欢groovy的风格。才开始学习groovy,代码有问题的地方还望大虾指出,更希望大虾多多提意见,多多指导我

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐