Groovy 集合
在 Groovy 提供的所有方便的快捷方式和功能中,最有帮助的一个可能就是内置的 集合。回想一下在 Java 编程中是如何使用集合的 — 导入 java.util
类,初始化集合,将项加入集合。这三个步骤都会增加不少代码。
而 Groovy 可以直接在语言内使用集合。在 Groovy 中,不需要导入专门的类,也不需要初始化对象。集合是语言本身的本地成员。Groovy 也使集合(或者列表)的操作变得非常容易,为增加和删除项提供了直观的帮助。
可以将范围当作集合
在前一节学习了如何用 Groovy 的范围将循环变得更容易。范围表达式 “0..4
” 代表数字的集合— 0、1、2、3 和 4。为了验证这一点,请创建一个新类,将其命名为 Ranger
。保留类定义和 main
方法定义。但是这次添加以下代码:
def range = 0..4 println range.class assert range instanceof List
请注意,assert
命令用来证明范围是 java.util.List
的实例。接着运行这个代码,证实该范围现在是类型 List
的集合。
丰富的支持
Groovy 的集合支持相当丰富,而且美妙之处就在于,在 Groovy 的魔法背后,一切都是标准的 Java 对象。每个 Groovy 集合都是 java.util.Collection
或 java.util.Map
的实例。
前面提到过,Groovy 的语法提供了本地列表和映射。例如,请将以下两行代码添加到 Ranger
类中:
def coll = ["Groovy", "Java", "Ruby"] assert coll instanceof Collection assert coll instanceof ArrayList
你将会注意到,coll
对象看起来很像 Java 语言中的数组。实际上,它是一个 Collection
。要在普通的 Java 代码中得到集合的相同实例,必须执行以下操作:
Collection<String> coll = new ArrayList<String>(); coll.add("Groovy"); coll.add("Java"); coll.add("Ruby");
在 Java 代码中,必须使用 add()
方法向 ArrayList
实例添加项。
添加项
Groovy 提供了许多方法可以将项添加到列表 — 可以使用 add()
方法(因为底层的集合是一个普通的 ArrayList
类型),但是还有许多快捷方式可以使用。
例如,下面的每一行代码都会向底层集合加入一些项:
coll.add("Python") coll << "Smalltalk" coll[5] = "Perl"
请注意,Groovy 支持操作符重载 —<<
操作符被重载,以支持向集合添加项。还可以通过位置参数直接添加项。在这个示例中,由于集合中只有四个项,所以 [5]
操作符将 “Perl” 放在最后。请自行输出这个集合并查看效果。
检索非常轻松
如果需要从集合中得到某个特定项,可以通过像上面那样的位置参数获取项。例如,如果想得到第二个项 “Java”,可以编写下面这样的代码(请记住集合和数组都是从 0 开始):
assert coll[1] == "Java"
Groovy 还允许在集合中增加或去掉集合,如下所示:
def numbers = [1,2,3,4] assert numbers + 5 == [1,2,3,4,5] assert numbers - [2,3] == [1,4]
请注意,在上面的代码中, 实际上创建了新的 集合实例,由最后一行可以看出。
魔法方法
Groovy 还为集合添加了其他一些方便的功能。例如,可以在集合实例上调用特殊的方法,如下所示:
def numbers = [1,2,3,4] assert numbers.join(",") == "1,2,3,4" assert [1,2,3,4,3].count(3) == 2
join()
和 count()
只是在任何项列表上都可以调用的众多方便方法中的两个。分布操作符(spread operator) 是个特别方便的工具,使用这个工具不用在集合上迭代,就能够调用集合的每个项上的方法。
假设有一个 String
列表,现在想将列表中的项目全部变成大写,可以编写以下代码:
assert ["JAVA", "GROOVY"] == ["Java", "Groovy"]*.toUpperCase()
请注意 *.
标记。对于以上列表中的每个值,都会调用 toUpperCase()
,生成的集合中每个 String
实例都是大写的。
相关推荐
2. **Groovy集合**:Groovy作为JVM上的动态语言,其集合操作与Java类似但更为简洁。Groovy支持List、Set、Map等,且提供了许多便利的语法糖,如使用下标操作符[]来获取和设置元素,以及使用闭包进行集合操作,使代码...
Groovy的XML支持是其一大亮点,它提供了一种简洁的语法来操作XML,使得XML处理变得像操作普通的Groovy集合一样简单。例如,通过Groovy的GPath表达式,开发者可以直接使用类似CSS选择器的方式来获取XML节点。此外,...
12. **集合**:Groovy集合包括列表(Lists)和映射(Maps)。集合是存储和操作一组数据的对象。教程中可能会涉及到创建和操作集合的方法。 13. **数组**:数组是同一种数据类型的集合。在Groovy中,数组提供了许多...
例如,我们可能会有一个MongoDB集合,其中每个文档包含一个字段存储Groovy脚本。Java代码会连接到MongoDB,找到这个文档,读取Groovy脚本,然后使用GroovyClassLoader进行加载和执行。 动态加载数据库中的Groovy...
这些集合类型在Groovy中得到了极大的扩展和简化,例如使用操作符来添加元素或遍历集合。闭包(closures)是Groovy中非常重要的一个概念,闭包是一种可以作为参数传递、可以从其被定义的作用域外调用的代码块。Groovy...
Groovy支持多种集合数据类型,如列表(List)、映射(Map)等,这些数据类型的使用方式与Java相似,但Groovy提供了更多的语法糖,使得代码更加简洁易读。 #### 六、元编程 Groovy强大的元编程特性使得开发者能够...
Groovy All-2.4.8.jar 是一个包含Groovy库的集合包,主要用于简化Groovy环境的搭建和使用。这个版本(2.4.8)是Groovy在2.x系列中的一个稳定发行版,提供了一系列的功能和性能改进。 1. **Groovy简介** - Groovy是...
1. **groovy-all.jar**:这是一个包含了Groovy库所有模块的集合,你可以通过引入这个单一的jar文件来快速地在项目中使用Groovy。 2. **bin**目录:包含了一系列可执行脚本,如`groovy`, `groovyc`, 和 `groovysh`,...
5. **Groovy类库**:Groovy标准库提供了一系列的类和模块,涵盖了集合操作、元编程、XML处理、网络I/O等多个领域,这些类库极大地丰富了Groovy的内置功能。 6. **Gradle集成**:由于Groovy是Gradle的默认脚本语言,...
它可以接收任何Groovy集合(如Map或List)并生成对应的JSON文本: ```groovy def data = [name: 'John', age: 30, city: 'New York'] def jsonString = new JsonBuilder(data).toPrettyString() println json...
- **集合操作**:Groovy提供了丰富的集合操作方法,如filter、find、sort等,使得集合处理变得更加简单。 **4. 闭包** - **定义**:闭包是Groovy中最强大的特性之一,它是一种可以访问其外部作用域变量的匿名...
Groovy的集合类型包括List、Map和Range等,这些类型在Groovy中被扩展以支持更多的操作。例如,List在Groovy中可以像Python一样使用负索引,Range则可以通过简单的范围表达式生成序列。这些集合类型在Groovy中都是...
3. 集合与闭包:熟悉Groovy的List、Map等集合操作,以及强大的闭包特性。 4. 文件I/O和网络编程:学习如何使用Groovy进行文件操作和网络通信。 5. 测试与调试:掌握Spock测试框架,进行单元测试和集成测试。 6. 深入...