list转换为数组html
List list = ['a','b','c','d'] def strs = list as String[] println strs[0]
使用了Groovy语言,就能时不时的感觉到Groovy语言在编码风格上与Java语言的不一样。固然,咱们首先感觉到的可能就是在Groovy语言中无处不在的闭包,其中最最经常使用的是each方法。java
好比,下面的代码段是咱们在Java语言中经常使用的遍历风格:api
for(int i=0;i<list.size();i++) { System.out.println(list.get(i)); }
可是,咱们在Groovy语言中经常使用的遍历风格倒是以下的代码段:数组
list.each{闭包
println it编码
}.net
这种风格,已经让我强烈感觉到了Groovy语言编码的快捷性。可是,咱们,对于长期使用Java语言的咱们来讲,Groovy语言在许许多多的地方表现出它的风格,但咱们因为使用Java语言的惯性,未必能很天然的使用它们。code
好比,咱们有以下的一个集合对象:htm
def list = [1,2,3,4]对象
如今,咱们须要获得一个集合对象,它的每个元素是上面的list对象的每个元素的两倍。咱们从Java语言过来的人很容易写出以下的代码来:
def result = []
list.each{
result << it*2
}
咱们可能会洋洋自得,咱们的each方法使用的不错,代码比起Java语言来简单得多了。但实际上,Groovy语言为咱们准备了更加简单的方法,这就是Groovy语言风格的集合方法--collect方法。
def result = list.collect{it*2}
能够看到,只有一个语句行,就代替了上面的三个语句行。这就是咱们Groovy风格的代码,一样的方法还有"collect
(Collection collection, Closure closure)
","collectAll
(Closure closure)
"和"collectAll
(Collection collection, Closure closure)
"。
仍是上面的list对象,好比,咱们想找出该对象中全部大于2的元素来,咱们的Java语言风格应该是这样的:
def result = []
list.each{
if(it>2)
result << it
}
println result
可是,这种过滤,在Groovy语言中,一样能够找到集合方法来代替它,使得代码更加具备Groovy语言风格:
def result = list.grep{
it > 2
}
println result
是的,在Groovy语言中,咱们对集合元素的过滤通常都使用"grep"方法,这样的代码更加具备Groovy风格一些。具备一样一些功能的方法还有"find
(Closure closure)
","findAll
(Closure closure)
"。
在Java语言中,对List的遍历方法是万能的,咱们要作的一切功能都必须从遍历方法开始。好比,咱们想知道上面的list对象是否全部的元素都大于0。在Java语言中,咱们会写出以下的代码:
boolean isMoreThanZero = true;
for(int i in list)
{
if(i<=0)
{
isMoreThanZero = false;
break;
}
}
println isMoreThanZero
在Groovy语言中,一样有Groovy风格的方法来帮咱们省掉一大段的代码,这就是"every"方法:
def isMoreThanZero = list.every{
it>0
}
println isMoreThanZero
一样类型的方法还有"any
(Closure closure)
","any
()
"和"every
()
"。
除了上面的一些Groovy风格的代码,咱们还有难度更大一些的Groovy语言风格的方法,好比注入方法--"inject"。
好比,咱们想把list对象的全部元素相加起来,而后再和10求和。Java语言的编码风格看起来以下:
def count = 10
list.each{
count+=it
}
println count
但Groovy语言风格的代码看起来以下所示:
def count = list.inject(10){result,it->
result+it
};
println count
相似这样的注入方法,Groovy语言还有集合方法"count
(Object value)
"。
还有一个集合方法,对于字符串特别好用。好比,咱们想把上面的list对象的全部元素链接成一个字符串。Java语言的风格是这样的:
def result = ''
list.each{
result+=it
}
println result
Groovy语言风格的代码则是以下:
def result = list.join()
println result
好了,就举出这么多了,都是一些集合方法配合闭包来使用而造成的Groovy语言风格的代码,写起来既快捷又简约,体现出Groovy语言做为动态语言的特色来。