# Groovy 使用 lists/maps/ranges - Lists

**URL:** <https://www.isharkfly.com/t/groovy-lists-maps-ranges-lists/6897>\
**Category:** 程序语言\
**Created:** [November 25, 2012, 6:49am UTC](https://www.isharkfly.com/t/groovy-lists-maps-ranges-lists/6897 "2012-11-25T06:49:30Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![honeymoose](https://www.isharkfly.com/user_avatar/www.isharkfly.com/honeymoose/32/20796_2.png) [@honeymoose](https://www.isharkfly.com/u/honeymoose)\
**Post date:** [November 25, 2012, 6:49am UTC](https://www.isharkfly.com/t/groovy-lists-maps-ranges-lists/6897/1 "2012-11-25T06:49:30Z")

</div>

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

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

 ![](https://com-ossez-www-discourse.s3.dualstack.us-east-2.amazonaws.com/discourse-uploads/original/2X/0/04197c51eede3a1b978396c133648a646c6faa2b.png)

列表中每一个位置对应一个罗马数字，做起来就像使用数组一样，但是在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描绘的那样：

![](https://www.isharkfly.com/images/transparent.png)

你看到的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语言设计者怎样设计一般的请求操作，并且为程序员提供简单的、一致的语法，让程序员的工作更轻松。
