列表、映射和范围

列表(list)、映射(map)和范围(range),它们都是引用其他对象的集合。列表和映射能够引用不同类型的对象,范围则表示整型值的集合。列表和映射能够动态地增长。列表中的每个对象都由一个整型值索引来指定;而映射则能够通过任意类型的值进行索引。由于这些集合所包含对象的类型是随意的,列表中的元素有可能是一个映射,映射中的元素也有可能是一个列表。这样就可以构造出任意复杂的数据结构。

1. 列表:

列表字面值是一系列包含在方括号中的对象集合,对象之间以逗号分隔。列表的索引从0开始。

def numbers = [11,12,13,14]
println numbers[0]      //11
println numbers[3]      //14
println numbers[-1]     //14
println numbers[-2]     //13
println numbers[0..2]   //[11,12,13]
println numbers[1..<3]  //[12,13]
numbers[1]=22           
println numbers         //[11,22,13,14]
numbers<<15             
println numbers         //[11,22,13,14,15]
println numbers+[99,100]//[11,22,13,14,15,99,100]
println numbers-[99,100]//[11,22,13,14,15]

2. 列表方法:

3. 映射:

映射字面值将键值对放在方括号中,键值对之间用逗号分隔。

def custMap = ['english':92,'math':95]
println custMap      //[english:92,math:95]
def x = 1
def y = 2
def m = [x:y,y:x]
println m            //[x:2,y:1]

4. 映射方法:

5. 范围:

范围是表达特定序列值的一种简略方法。它通过序列中的第一个值和最后一个值表示,范围还具有包含和不包含的关系。一个具有包含关系的范围,将包含从第一个值开始到最后一个值为止的所有值;而一个具有不包含关系的范围,则包含除了最后一个值之外的所有值。下面是一些例子:

1900..1999    //20世纪(包含边界)
2000..<2100   //21世纪(不包含边界)
'A'..'D'      //A,B,C和D
10..1         //10,9,...,1
'Z'..'X'      //Z,Y和X

Groovy也为范围定义了一些方法:

方法名称函数原型/说明
containsboolean contains(Object obj) 如果当前范围包含给定的元素则返回true
getObject get(int index) 返回当前范围中给定位置的元素值
getFromComparable getFrom() 获取当前范围中下标最小的元素值
getToComparable getTo() 获取当前范围中下标最大的元素值
isReverseboolean isReverse() 当前范围是否为逆序
sizeint size() 返回当前范围中的元素个数
subListList subList(int fromIndex , int toIndex) 返回当前范围中给定的[fromIndex , toIndex)之间的所有值
def twentiethCentury = 1900..1999
def reversedTen = 10 ..1

println twentiethCentury.size()
println twentiethCentury.get(0)
println twentiethCentury.getFrom()
println twentiethCentury.getTo()
println twentiethCentury.contains(2000)
println twentiethCentury.subList(0,5)

println reversedTen[2]
println reversedTen.isReverse()

转载于:https://my.oschina.net/u/2914561/blog/816573

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值