这里对Groovy中常见的集合类型进行介绍
Array 数组
严格意义上来说,数组并属于集合容器。这里为了保持内容的连贯性、一致性。故将数组也放在此处一并进行介绍。在Groovy中,数组的表示形式与列表是一致的,均采用方括号。可通过赋值给显式数组变量类型 或 as 等方式创建一个数组,其次Groovy同样支持Java风格的数组创建、初始化方式
示例代码如下所示,可以看到与Java数组最大的区别是支持负数索引下标。其中,-1表示最后一个元素,-2表示倒数第二个元素,依此类推
1 | class ArrayDemo { |
List 列表
Groovy采用方括号用于表示列表,默认实现类为ArrayList。同样支持负数索引特性。特别地,Groovy还对列表的功能进行了增强,具体地通过重载相关操作符实现。列表的基本操作示例如下所示
1 | class ListDemo { |
Groovy对列表的操作进行增强,使得我们可以很方便将其作为一个stack栈进行操作。示例代码如下所示
1 | class ListDemo { |
为了更好的使用列表,Groovy对Java列表中原有的方法进行了拓展、增强。具体如下所示
1 | class ListDemo { |
前面我们提到Switch语句支持分类器,其本质上就是通过调用isCase方法判断是否属于某分类。事实上,对于Groovy中的集合类均存在一个Grep过滤器方法,用于过滤、筛选出符合要求的元素。这里其实就是隐式调用了过滤器的isCase方法。这里以List集合为例,展示如何使用Grep方法
1 | class ListDemo { |
Map 映射
对于Map映射而言,Groovy采用[:]语法进行表示。特别的是,Groovy支持将key作为下标获取Value。基本操作方式示例如下所示
1 | class MapDemo { |
在Groovy中,Map的默认实现类为LinkedHashMap。如果期望选择别的实现类也是可以的。示例如下所示
1 | class MapDemo { |
Range 范围
特别地,Groovy中还提供了Range范围这一集合类型。大大简化了Java中依靠传统for循环不停递增变量的编程方式。示例代码如下所示
1 | class RangeDemo { |
参考文献
- Groovy In Action · 2nd Edition Dierk König、Guillaume Laforge著