Groovy 使用 lists/maps/ranges - Lists

Java通过使用方括号和下标来索引数组,这种方式我们叫做下标操作符(subscript operator),groovy采用了相同的语法来支持list——java.util.List的实例, java.util.List允许向列表增加对象或者从列表中删除对象,允许在运行时改变列表的大小,保存在列表中的对象不受类型的限制;另外,groovy可以通过超出列表范围的数来索引列表,再一次表明可以改变列表的大小,此外,列表也可以直接在代码中指定。

下面的例子声明一个罗马数字列表并且用开头7个数来初始化这个列表,如图2.3所示

列表中每一个位置对应一个罗马数字,做起来就像使用数组一样,但是在groovy中,还有更多以前只有用数组的操作也被应用到list列表:

//罗马数字列表

def roman = [‘’, ‘I’, ‘II’, ‘III’, ‘IV’, ‘V’, ‘VI’, ‘VII’]

//访问列表

assert roman[4] == ‘IV’

//扩张列表

roman[8] = ‘VIII’

assert roman.size() == 9

注意,在我们为列表位置索引为8的位置赋值时,该位置其实并不存在,代码中操作了超出列表范围的位置。

简单的映射(maps)

一个map是用来给一个键(key)分配值(value)的强类型,map通过key存储和找回值(values),但是list通过位置找回值。

不像java,groovy在语言级别支持map,允许使用特定的操作符来操作map,这是一个清晰的和简单的语法,maps的操作语法像键—值对数组,通过冒号分隔键(key)和值(values)。

他们一起被获取。

下面的例子存储http返回的代码描述在一个map中,如图2.4描绘的那样:

你看到的map的声明和初始化,获取值和增加新的实体,这些的都在源代码中通过一个方法完成,甚至是检查map的size:[code]def http = [

100 : ‘CONTINUE’,

200 : ‘OK’,

400 : ‘BAD REQUEST’ ]

assert http[200] == ‘OK’

http[500] = ‘INTERNAL SERVER ERROR’ assert http.size() == 4
[/code]注意声明、访问和修改列表是如何统一在一起的,map和list之间的差别非常小。

因此,这两个都很容易记住,这个例子很好的说明了groovy语言设计者怎样设计一般的请求操作,并且为程序员提供简单的、一致的语法,让程序员的工作更轻松。