转载自http://www.blogjava.net/BlueSUN/archive/2007/08/26/139460.html
Groovy 提供了许多‘匕首方法’(匕首,短小精悍也~如 each,eachWithIndex,any,every,grep,join,sort,find,findAll,collect,groupBy,inject,reverse,tokenize,unique,max,min,count,sum等)来提升开发者的开发效率,但常被Java开发人员忽视。在这篇随笔中我将为您演示各方法的使用。
each
遍历List
List.each { elem ->
println elem
} 运行结果:
a
b
c
遍历map
def map [name: " 山风小子 Shanghai ]
map.each { key, value
println $key : $value
} 运行结果:
name : 山风小子
address : Shanghai
eachWithIndex
带index的each
]
List.eachWithIndex { elem, i $i : $elem 0 : a
1 : b
2 : c
any
只要存在一个满足条件(此例中的条件为elem.length() < 3)的element就返回true,否则返回false
ab abc ]
List.any { elem
elem.length() < 3 true
every
所有的element都满足条件才返回true,否则返回false
]
List.every { elem false
grep
符合条件的element会被提取出来,形成一个List
条件以closure的形式传入
]
List.grep { elem
elem.length() ["a", "ab"]
条件以regex的形式传入,符合regex的element被提取出来形成一个List
]
List.grep( ~/ .. / ) 运行结果:
["ab"]
条件以collection的形式传入,在collection中的element被提取出来形成一个List,可以看作求两个collection的交集
]
List.grep([ cde ]) 运行结果:
join
用指定的字符连接collection中的element
2007 8 26 ]
List.join( - 2007-8-26
sort
根据指定条件进行排序
]
List.sort { e1, e2
return e1 e2
} 运行结果:
[8, 26, 2007]
find
查找collection中满足条件的‘第一个’element
]
List.find { elem
elem 30 8
findAll
查找collection中满足条件的‘所有’element
]
List.findAll { elem collect
对collection的element进行处理,并将处理结果放到一个新的collection中
]
List.collect { elem * 2 ["aa", "bb", "cc"]
对map进行处理
]
map.collect { entry ${entry.key} : ${entry.value} [name : 山风小子, address : Shanghai]
groupBy
对collection中的element按给定条件进行分组
bc ]
List.groupBy { elem
elem.length()
} 运行结果:
[1:["a", "b", "c"], 2:["ab", "bc"], 3:["abc"]]
inject
一个累积的过程,传入inject方法的'I'作为sum的初始值,在遍历collection的过程中,将处理结果( " $sum $elem ")保存到sum中
love you ]
List.inject( I ) { sum, elem
$sum $elem I love you
reverse
将collection中各element的次序颠倒一下
]
List.reverse() 运行结果:
["c", "a"]
颠倒字符串
List.reverse() 运行结果:
cba
tokenize
指定分隔符,取得token集
a1/b2/c3/d4 .tokenize( ["a1", "b2", "c3", "d4"]
unique
去除collection中重复的element
]
List.unique() 运行结果:
max
求最大值
1 ]
List.max() 运行结果:
3
按指定的比较内容(此例的比较内容为长度length),在collection中选出最大的element
]
List.max { elem
elem.length()
}
min与max类似,求最小值,再次就不演示用法了,用法与max相同,将上述代码中的max改为min即可
count
计数
]
List.count( 2
对字符串"aaba"中的a进行计数
aaba
List.count( 3
sum
求和
]
List.sum() 运行结果:
6
求字符串的‘和’,其实就是连接字符串
abc 最后,我想提醒各位一点:有时您可以将string看作List,对string使用适用于List的‘匕首方法’ 总结
以上是内存溢出为你收集整理的Groovy高效编程——‘匕首方法’的使用(更新于2007.09.14)(转载)全部内容,希望文章能够帮你解决Groovy高效编程——‘匕首方法’的使用(更新于2007.09.14)(转载)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)