初窥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,代码有问题的地方还望大虾指出,更希望大虾多多提意见,多多指导我 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |