Groovy探索 使用集合方法,写出更加Groovy风格的代码
2009-03-17 08:20
411 查看
Groovy探索 使用集合方法,写出更加Groovy风格的代码
使用了Groovy语言,就能时不时的感受到Groovy语言在编码风格上与Java语言的不同。当然,我们首先感受到的可能就是在Groovy语言中无处不在的闭包,其中最最常用的是each方法。
比如,下面的代码段是我们在Java语言中常用的遍历风格:
for(int i=0;i<list.size();i++)
{
System.out.println(list.get(i));
}
但是,我们在Groovy语言中常用的遍历风格却是如下的代码段:
list.each{
println it
}
这种风格,已经让我强烈感受到了Groovy语言编码的快捷性。但是,我们,对于长期使用Java语言的我们来说,Groovy语言在许许多多的地方表现出它的风格,但我们由于使用Java语言的惯性,未必能很自然的使用它们。
比如,我们有如下的一个集合对象:
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风格的代码,同样的方法还有"
还是上面的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风格一些。具有同样一些功能的方法还有"
在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
同样类型的方法还有"
除了上面的一些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语言还有集合方法"
还有一个集合方法,对于字符串特别好用。比如,我们想把上面的list对象的所有元素连接成一个字符串。Java语言的风格是这样的:
def result = ''
list.each{
result+=it
}
println result
Groovy语言风格的代码则是如下:
def result = list.join()
println result
好了,就举出这么多了,都是一些集合方法配合闭包来使用而形成的Groovy语言风格的代码,写起来既快捷又简约,体现出Groovy语言作为动态语言的特点来。
使用了Groovy语言,就能时不时的感受到Groovy语言在编码风格上与Java语言的不同。当然,我们首先感受到的可能就是在Groovy语言中无处不在的闭包,其中最最常用的是each方法。
比如,下面的代码段是我们在Java语言中常用的遍历风格:
for(int i=0;i<list.size();i++)
{
System.out.println(list.get(i));
}
但是,我们在Groovy语言中常用的遍历风格却是如下的代码段:
list.each{
println it
}
这种风格,已经让我强烈感受到了Groovy语言编码的快捷性。但是,我们,对于长期使用Java语言的我们来说,Groovy语言在许许多多的地方表现出它的风格,但我们由于使用Java语言的惯性,未必能很自然的使用它们。
比如,我们有如下的一个集合对象:
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语言作为动态语言的特点来。
相关文章推荐
- Groovy探索 使用集合方法,写出更加Groovy风格的代码
- Groovy探索之Gpath和List的结合 更加Groovy风格的代码
- 写出gradle风格的groovy代码
- Groovy探索之闭包 七 使用闭包来实现模板方法模式
- Groovy探索 对字符串编写Groovy风格的代码
- 使用小书匠代码语法高亮功能,写出更加容易阅读的代码
- 使用小书匠代码语法高亮功能,写出更加容易阅读的代码
- 使用Sandcastle Help File Builder建立MSDN风格的代码文档
- PL/SQL:集合类型 (定义,分类,使用场景,集合方法)
- Java使用反射的方法加载类的具体代码
- 数据集合使用方法
- 在android中使用proguard混淆代码出现“Conversion to Dalvik format failed with error 1”错误的解决方法
- 解决使用pycharm提交代码时冲突之后文件丢失找回的方法
- 简单完整的代码,通过这个代码你将对RSA加密算法在Java中的实现方法有一个初步的了解,这个类,你可以直接使用,水平高的,就自己修改完善下代码。
- Groovy探索之invokeMethod方法
- 5种方法立刻写出更好的CSS代码
- 【我的Java笔记】集合中 toArray() 方法的使用
- Xcode8不能使用快捷键“command+/”注释代码的解决方法
- 没有模板代码膨胀的STL:二、使用方法与注意事项
- ExtTag,如果你不想写extjs那么麻烦的代码可以尝试使用html方式的方法来创建extjs控件.