大佬教程收集整理的这篇文章主要介绍了Groovy操纵集合秘籍,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
遍历list对象
java风格:
def list = [1,2,3,4] for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); }
groovy风格:
def list = [1,4] list.each{ println it }
例如:我们需要得到一个集合对象,它的每一个元素是list对象的每一个元素的两倍
java风格:
def list = [1,4] def result = [] list.each{ result << it*2 }
groovy风格:
def list = [1,4] def result = list.collect{it*2}
> 可以看到,只有一个语句行,就代替了上面的三个语句行。这就是我们Groovy风格的代码,同样的方法还有collect(Collection collection,Closure closurE)
,collectAll(Closure closurE)
和collectAll(Collection collection,Closure closurE)
。
例如:比如,我们想找出该对象中所有大于2的元素来
java风格:
def list = [1,4] def result = [] list.each{ if(it>2) { result << it } } println result
groovy风格:
def list = [1,4] def result = list.grep{ it > 2 } println result
> 是的,在Groovy语言中,我们对集合元素的过滤一般都使用grep
方法,这样的代码更加具有Groovy风格一些。具有同样一些功能的方法还有find(Closure closurE)
,findAll(Closure closurE)
。
在Java语言中,对List的遍历方法是万能的,我们@L_801_17@的一切功能都必须从遍历方法开始。比如,我们想知道list对象是否所有的元素都大于0
java风格:
def list = [1,4] Boolean isMoreThanZero = true; for(int i in list) { if(i<=0) { isMoreThanZero = false; break; } } println isMoreThanZero
groovy风格:
def list = [1,4] def isMoreThanZero = list.every{ it>0 } println isMoreThanZero
> 同样类型的方法还有any(Closure closurE)
,any()"和"every()
。
比如,我们想把list对象的所有元素相加起来,然后再和10求和
java风格:
def list = [1,4] def count = 10 list.each{ count+=it } println count
groovy风格:
def list = [1,4] def count = list.inject(10){result,it-> result=result+it }; println count
> 类似这样的注入方法,Groovy语言还有集合方法count(Object value)
。
还有一个集合方法,对于字符串特别好用。比如,我们想把list对象的所有元素连接成一个字符串
java风格:
def list = [1,4] def result = '' list.each{ result+=it } println result
groovy风格:
def list = [1,4] def result = list.join() println result
都是一些集合方法配合闭包来使用而形成的Groovy语言风格的代码,写起来既快捷又简约,体现出Groovy语言作为动态语言的特点来。
groovy风格:
def list4 = [1,1,1] def list5 = [2,2] assert [[1,2],[1,2]] == [list4,list5].transpose()
> 有一点需要注意的是,如果List的长度不一,则取最短的长度:
以上是大佬教程为你收集整理的Groovy操纵集合秘籍全部内容,希望文章能够帮你解决Groovy操纵集合秘籍所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。