`

Groovy用户指南(3)

阅读更多

3、集合<o:p></o:p>

Groovy支持集合、ListMap和数组<o:p></o:p>

1Lists<o:p></o:p>

l         下面是创建List的例子,[]表示空List表达式<o:p></o:p>

list = [5, 6, 7, 8]<o:p></o:p>
assert list.get(2) == 7<o:p></o:p>
assert list instanceof java.util.List<o:p></o:p>
 <o:p></o:p>
emptyList = []<o:p></o:p>
assert emptyList.size() == 0<o:p></o:p>
emptyList.add(5)<o:p></o:p>
assert emptyList.size() == 1<o:p></o:p>

l         每个List表达式都是java.util.List的实现<o:p></o:p>

2)范围(Ranges<o:p></o:p>

l         Range允许创建连续值的列表<o:p></o:p>

l         由于Range扩展java.util.List,所以Range可以作为List使用<o:p></o:p>

l         使用..Range是包括两个边界,使用...Range只包括开始边界,而不包括结束边界<o:p></o:p>

// an inclusive range<o:p></o:p>
range = 5..8<o:p></o:p>
assert range.size() == 4<o:p></o:p>
assert range.get(2) == 7<o:p></o:p>
assert range instanceof java.util.List<o:p></o:p>
assert range.contains(5)<o:p></o:p>
assert range.contains(8)<o:p></o:p>
 <o:p></o:p>
// lets use an exclusive range<o:p></o:p>
range = 5...8<o:p></o:p>
assert range.size() == 3<o:p></o:p>
assert range.get(2) == 7<o:p></o:p>
assert range instanceof java.util.List<o:p></o:p>
assert range.contains(5)<o:p></o:p>
assert ! range.contains(8)<o:p></o:p>

l         Range可以用于实现java.lang.ComparableJava对象<o:p></o:p>

// an inclusive range<o:p></o:p>
range = 'a'..'d'<o:p></o:p>
assert range.size() == 4<o:p></o:p>
assert range.get(2) == 'c'<o:p></o:p>
assert range instanceof java.util.List<o:p></o:p>
assert range.contains('a')<o:p></o:p>
assert range.contains('d')<o:p></o:p>
assert ! range.contains('e')<o:p></o:p>

l         Range可以用于循环遍历<o:p></o:p>

for (i in 1..10) {<o:p></o:p>
  println "Hello ${i}"<o:p></o:p>
}<o:p></o:p>

3Maps<o:p></o:p>

l         下面是创建Map的例子,[:]表示空Map表达式<o:p></o:p>

map = ["name":"Gromit", "likes":"cheese", "id":1234]<o:p></o:p>
assert map.get("name") == "Gromit"<o:p></o:p>
assert map.get("id") == 1234<o:p></o:p>
assert map instanceof java.util.Map<o:p></o:p>
 <o:p></o:p>
emptyMap = [:]<o:p></o:p>
assert emptyMap.size() == 0<o:p></o:p>
emptyMap.put(5, "foo")<o:p></o:p>
assert emptyMap.size() == 1<o:p></o:p>
assert emptyMap.get(5) == "foo"<o:p></o:p>

l         Map可以象beans一样操作,但key值(类似属性名)必须为有效的String标识<o:p></o:p>

map = ["name":"Gromit", "likes":"cheese", "id":1234]<o:p></o:p>
assert map.name == "Gromit"<o:p></o:p>
assert map.id == 1234<o:p></o:p>
 <o:p></o:p>
emptyMap = [:]<o:p></o:p>
assert emptyMap.size() == 0<o:p></o:p>
emptyMap.foo = 5<o:p></o:p>
assert emptyMap.size() == 1<o:p></o:p>
assert emptyMap.foo == 5<o:p></o:p>

4)使用下标操作符<o:p></o:p>

l         可以在字符串、ListsMaps...中使用下标进行索引<o:p></o:p>

text = "nice cheese gromit!"<o:p></o:p>
x = text[2]<o:p></o:p>
assert x == "c"<o:p></o:p>
assert x.class == String<o:p></o:p>
sub = text[5..10]<o:p></o:p>
assert sub == 'cheese'<o:p></o:p>
 <o:p></o:p>
map = ["name":"Gromit", "likes":"cheese", "id":1234]<o:p></o:p>
assert map['name'] == "Gromit"<o:p></o:p>
 <o:p></o:p>
list = [10, 11, 12]<o:p></o:p>
answer = list[2]<o:p></o:p>
assert answer == 12<o:p></o:p>
 <o:p></o:p>
list = 100..200<o:p></o:p>
sub = list[1, 3, 20..25, 33]<o:p></o:p>
assert sub == [101, 103, 120, 121, 122, 123, 124, 125, 133]<o:p></o:p>

l         可以使用下标操作符更新项目<o:p></o:p>

list = ["a", "b", "c"]<o:p></o:p>
list[2] = "d"<o:p></o:p>
list[0] = list[1]<o:p></o:p>
list[3] = 5<o:p></o:p>
assert list == ["b", "b", "d", 5]<o:p></o:p>

l         可以使用负索引从最后开始计数<o:p></o:p>

分享到:
评论

相关推荐

    Groovy用户指南

    Groovy用户指南 Groovy用户指南

    groovy用户指南--中文版

    groovy用户指南,中文版的嗷,支持一下吧

    groovy学习大礼包

    groovy学习大礼包,包括groovy用户指南,groovy解惑,Groovy轻松入门

    Gradle用户指南中文版

    这本用户指南还并不完善, 就像 Gradle 一样还在开发当中. 在这本指南中, Gradle 的一些功能并没有被完整的展示出来. 一些内容的解释也并不是十分的清楚, 或者假设关于 Gradle 你知道得更多. 我们需要你的帮助来完善...

    Gradle 用户指南 .pdf

    中文翻译《Gradle 3 用户指南》,Gradle是一个构建系统, 我们认为它是 java ( JVM ) 世界中构建技术的一个飞跃. Gradle 提供了: 一个像 Ant 一样的非常灵活的通用构建工具 一种可切换的, 像 maven 一样的基于合约构建...

    GroovyPDF文档

    Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大...本套资源中包含了:Groovy轻松入门 ,Groovy中文教程, Groovy用户指南, Groovy学习笔记,Groovy官方demo,五本书!

    alibaba dubbo操作用户指南

    详细介绍了分布式架构和流动式架构、dubbo服务治理原理架构、用法

    elasticsearch权威指南中文版.rar

    Elasticsearch权威指南,带完整目录。 ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的...

    springboot参考指南

    使用Groovy beans DSL开发应用 iv. 57. 接下来阅读什么 9. VIII. 构建工具插件 i. 58. Spring Boot Maven插件 i. 58.1. 包含该插件 ii. 58.2. 打包可执行jar和war文件 ii. 59. Spring Boot Gradle插件 i. 59.1. ...

    竞拍系统源码java-CacheStore:具有强大API的键值混合存储系统,利用内存缓存和磁盘来优化性能

    用户指南: 【对象查询指南】() 【CacheStore Groovy Shell 指南】() 变更日志: [更新日志] () 下载 CacheStore 代码库: 远程缓存存储包: 集群缓存存储包: 要将 CacheStore 及其模块添加到您自己的项目中,请将...

    xmljava系统源码-gradle_user_guide:Gradle用户指南

    基于Groovy的领域特定语言(DSL),用于描述和操作构建过程 支持maven/lvy的依赖管理 非常灵活,并不强迫用户一定要使用最佳的构建方式 插件可以暴露自身的语言和接口api给构建文件使用 支持IDE集成 2.2 需求...

    Maven权威指南 很精典的学习教程,比ANT更好用

    用户相关配置和仓库 2.5.2. 升级Maven 2.6. 获得Maven帮助 2.7. 使用Maven Help插件 2.7.1. 描述一个Maven插件 2.8. 关于Apache软件许可证 I. Maven实战 3. 一个简单的Maven项目 3.1. 简介 3.1.1. ...

    gradle-7.5.1-all.zip 快速下载

    此版本包括使用 Java 18 构建代码和运行 Gradle、使用 Groovy 4 构建代码、响应速度更快的持续构建、改进的依赖解析诊断以及配置缓存改进以提高性能、为 JVM 提供 Adoptium 工具链等等,官方建议用户进行升级。...

    SPRING攻略 第2版.pdf

    《Spring攻略(第2版)》是Spring平台的深入指南,它引导你进入Spring 3及其辅助框架的最新技术。《Spring攻略(第2版)》不仅为你全面而又深入地讲解各种概念,并且在每一章中都配备了一系列详细的代码示例,以帮助读者...

    SPRING攻略 第2版

    构建于Spring IoC容器组件模型之上的这些Spring3部件提供了集成、批处理、OSGi、Ajax和Flex集成、状态式的Web应用、REST风格Web服务、富客户端用户界面、Google AppEngine开发、基于云的部署、消息、数据访问、Web...

    Spring攻略(第二版)高清版

    构建于Spring IoC容器组件模型之上的这些Spring3部件提供了集成、批处理、OSGi、Ajax和Flex集成、状态式的Web应用、REST风格Web服务、富客户端用户界面、Google AppEngine开发、基于云的部署、消息、数据访问、Web...

    jenkins-spock:使用Spock对Jenkins管道代码进行单元测试

    用户指南( ) 将此库添加到test范围内的pom.xml中:&lt; dependency&gt;&lt; groupId&gt;com.homeaway.devtools.jenkins&lt;/ groupId&gt;&lt; artifactId&gt;jenkins-spock&lt;/ artifactId&gt;&lt; scope&gt;test&lt;/ scope&gt;&lt;/ dependency&gt; 检查以查找...

    SPRING攻略 第2版 (带书签)(一)

    构建于Spring IoC容器组件模型之上的这些Spring3部件提供了集成、批处理、OSGi、Ajax和Flex集成、状态式的Web应用、REST风格Web服务、富客户端用户界面、Google AppEngine开发、基于云的部署、消息、数据访问、Web...

Global site tag (gtag.js) - Google Analytics