Groovy入门(二)——集合类型-Range
2016-04-18 20:41
369 查看
1. 范围 Ranges
ranges用..表示范围操作符,用来指定左边界和右边界ep: (0..10) -> 01234567890
..<操作符指定了半排除范围,不包含右边界
ep:(0..<10) -> 0123456789
range也可以通过显示方法创建:
def a = new IntRange(0,10)
Range主要方法
range主要有如下方法:1.contains:是否包含一个元素。
assert (0..10).contains(5) == true assert(0..<10).contains(10) == false
2.size:集合大小
assert(0..<10).size() == 10
3.each迭代闭包
def str = '' (9..5).each{element-> str+=element } println(str) -> "98765"
4. grep获取指定范围内的元素
assert [22,33,44,55,66].grep((21..50)) == [22,33,44]
5.在switch case语句中使用
age = 36 switch (age){ case 10..26: rate =0.05;break case 27..36: rate = 0.06;break case 37..46: rate =0.07;break default: throw new IllegalArgumentException() } assert rate==0.06
Range实战
range可以用于任何类型,date类型或者String类型,只要这个类型满足以下两个条件:1.该类型实现next和previous方法,也就是说,重写++和–操作符;
2.该类型实现java.lang.Comparable接口;也就是说实现compareTo方法, 实际上是重写<=>操作符。
下面的例子中我们用类Weekday表示表示一周中的一天,一个Weekday有一个
值,这个值在‘sun’到‘sat’之间,本质上,它是0到6之间的一个索引,通过list的 下标来对应每个weekday的名称。
class Weekday implements Comparable{ final static DAYS=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'] private int index=0 Weekday(String day){ index = DAYS.indexOf(day) } Weekday previous(){ return new Weekday(DAYS[index-1]); } Weekday next(){ return new Weekday(DAYS[(index+1)%DAYS.size()]); } @Override int compareTo(Object o) { return this.index <=> o.index } String toString(){ return DAYS[index] } } def Monday = new Weekday('Mon') def Friday = new Weekday('Fri') def str = '' for (day in Monday..Friday){ str+= day.toString()+' ' } println(str)
相关文章推荐
- Groovy编程入门攻略
- Groovy Meta Object Protocol
- 用groovy写H2数据库的存储过程
- groovy实现JSONRPC
- Groovy 循环语法
- groovy中List集合的使用
- Python, Ruby 与 Groovy,谁与争锋
- groovy中问号表达式需要注意的小地方
- Hive Cli compile
- 学习Groovy
- 各语言设计思想的独特之处:C/C++、Java、Python、Objective C、Groovy
- Gradle 从入门到精通
- 用Groovy实现解压一个压缩文件,并且找出以数字或者大写字母开头的.groovy文件
- Groovy语言的安装和Hello World例子
- groovy脚本导致的FullGC问题
- gradle学习——gradle、groovy、DSL初认知
- 动态调用动态语言之Java脚本API
- ChinaGroovy中国社区
- 万丈高楼平地起 - 读《PHP5+MySQL网页系统开发设计》
- com.microsoft.sqlserver.jdbc.SQLServerException: 不支持此服务器版本。目标服务器必须是 SQL Server 2000 或更高版本