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

初窥groovy之集合(1)

发布时间:2020-12-14 16:53:58 所属栏目:大数据 来源:网络整理
导读:????最近学习了下groovy这门语言,感觉很犀利很简洁。groovy优缺点就不赘述了,有兴趣的google下。下面看下groovy对list的操作,也许能勾起你的兴趣。 1、创建list static void main(args){ def list=[1,2,3,5,8,2] println list} ?没错,不用new创建List,

????最近学习了下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,代码有问题的地方还望大虾指出,更希望大虾多多提意见,多多指导我

(编辑:李大同)

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

    推荐文章
      热点阅读