`
ihuashao
  • 浏览: 4710786 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Groovy的一些Map

阅读更多
Groovy Tip 18Groovy的一些Map
在Groovy语言中,Map是一个大的家族,除了我们常用的HashMap以外,还有很多其他的形形色色的Map。当然,这些Map的存在是因为它们有不同于HashMap的地方。现在,我们就来看看其中的两种Map。
一.TreeMap
TreeMap是一种能够给Map对象的key排序的Map,下面举一个例子来看看就能明白。
def map = [3:'c',2:'b',1:'a',5:'e',4:'d']
def tm = new TreeMap(map)
println tm
运行的结果为:
[1:"a", 2:"b", 3:"c", 4:"d", 5:"e"]
可以看到,我们随便初始化的一个Map对象,经过TreeMap以后,它的key有有序起来。
通过运行结果,我们还可以看到,在默认的情况下,TreeMap对象里面的key是按顺序排序。
当然,既然是默认的情况,我们就可以改变这种默认的情况。我们可以给TreeMap设定一个自己的比较器,使得TreeMap对象的key按自己的要求排序。
def map = [3:'c',2:'b',1:'a',5:'e',4:'d']
def com = [compare:
{
a,b ->
a>b?-1:1
}] as Comparator
def tm = new TreeMap(com)
tm.putAll(map)
println tm
首先,我们定义了一个比较器compare,然后通过初始化把它传递给TreeMap对象。上面的代码的运行结果为:
[5:"e", 4:"d", 3:"c", 2:"b", 1:"a"]
可以看到,我们定义的比较器是倒序的,所以我们得到的结果也是倒序的。
二.ObservableMap
ObservableMap是一个更有趣的Map类,它可以监视客户端对Map对象的操作,我们先来看看下面的代码:
def om = [:] as ObservableMap
om.addPropertyChangeListener({
evt ->
println"add value: ${evt.newValue}"
} as PropertyChangeListener)
om."test" = 'eee'
可以看到,我们给Map对象添加了一个监听器,这使得我们可以监听器客户端对om对象的操作,如上面代码的运行结果为:
add value: eee
这有点类似我们的JavaBean。当我们在某种特殊情况下,需要把我们的Map对象里面的值自动由小写转化为大写的时候,这个方法就有可能用得上。
分享到:
评论

相关推荐

    groovy中map的基本操作1

    在Groovy编程语言中,Map是一种非常重要的数据结构,它用于存储键值对。在本篇博客中,我们将深入探讨Groovy中Map的基本操作,特别是通过标题和描述中给出的例子。 首先,创建一个Map非常简单。例如,`def map = [a...

    groovy入门实例代码详细(包括字符串,map,闭包等等)

    本入门实例代码详细地涵盖了Groovy的一些核心概念和常用特性,包括字符串操作、Map的使用以及闭包等。 1. **字符串操作**: - Groovy中的字符串可以是单引号或双引号包裹的。双引号中的变量可以直接展开,单引号则...

    SpecialMap.groovy

    SpecialMap.groovy

    groovy入门经典,groovyeclipse 插件

    映射可以通过键值对进行操作,如`map.each{k, v -> println "Key: $k, Value: $v"}`。 Groovy还引入了GString,这是一种可变字符串,允许在字符串中嵌入表达式,如`${expression}`。此外,Groovy的运算符重载和元...

    groovy速查手册

    Groovy支持多种集合数据类型,如列表(List)、映射(Map)等,这些数据类型的使用方式与Java相似,但Groovy提供了更多的语法糖,使得代码更加简洁易读。 #### 六、元编程 Groovy强大的元编程特性使得开发者能够...

    实战groovy.rar

    Groovy是为了解决Java语言的一些繁琐问题而诞生的,它具有更简洁的语法,支持动态类型,可以无缝集成到Java项目中。Groovy与Java共享相同的类库和JVM,这使得它成为Java开发者的理想选择,尤其在构建脚本、自动化...

    groovy+in+action

    Groovy是一种面向对象的动态编程语言,它运行在Java平台上,兼容Java语法并提供了一些增强特性,如闭包、元编程、类型推断等。Groovy的设计旨在提高开发效率和代码可读性,同时保持与Java的互操作性。由于这些特性,...

    Groovy应用(基本操作)

    Groovy中的列表(List)和映射(Map)使用非常直观。列表可以通过下标访问,映射则通过键值对操作: ```groovy List list = [1, 2, 3] Map map = [key1: 'value1', key2: 'value2'] println list[0] // 输出:...

    目前最新版groovy-2.4.11

    4. **内置集合操作**:Groovy提供了丰富的集合操作,如map、filter、each等,使得数据处理更加方便。 5. **闭包**:Groovy中的闭包是其强大的特性之一,它可以作为函数传递,实现函数式编程风格。 6. **GroovyShell...

    groovy api 资料 自学文档

    - Map和List的简写:Groovy可以用`[key1: value1, key2: value2]`创建Map,用`[value1, value2, ...]`创建List。 3. **Groovy的集合操作**: - 集合的增强操作:如`each`、`collect`、`grep`等,提供了一系列便捷...

    Groovy学习笔记

    ### Groovy学习笔记知识点梳理 ...通过以上内容的学习,读者将能够了解Groovy的基本概念、主要特性和开发环境设置方法,同时也能掌握Groovy的基本语法和一些进阶技巧。这些知识点为后续深入学习提供了坚实的基础。

    Groovy学习笔记 PDF版

    6. **内建的集合支持**:Groovy提供了丰富的集合操作,如map、filter、each等,使得处理数组和列表变得更加简单。 7. ** Grape**:Grape是Groovy的依赖管理工具,类似Maven或Gradle,它能够自动下载并管理程序运行...

    Z2-Groovy in Action.pdf

    Groovy的集合类型包括List、Map和Range等,这些类型在Groovy中被扩展以支持更多的操作。例如,List在Groovy中可以像Python一样使用负索引,Range则可以通过简单的范围表达式生成序列。这些集合类型在Groovy中都是...

    一些groovy的实例代码--免费下载

    - Groovy的map和reduce函数方便地进行罗马数字的加减乘除。 7. **随机数生成** - `new Random().nextInt(max)`生成指定范围内的随机数。 8. **更随机的随机数** - 通过系统时间或其他不可预测源增加随机性。 9...

    groovy快速入门指南(中文)

    Groovy 提供了对集合的强大支持,包括 `List` 和 `Map` 的多种操作方式。 **1. List** - **定义与访问** - Groovy 中的 `List` 可以包含不同类型的元素。 ```groovy list = [1, 2, 'hello', new java.util.Date...

    groovy经典入门

    3. **列表和映射**:Groovy中的数组通常用List表示,可以用`[]`创建,而Map则用`[key1: value1, key2: value2]`创建,非常直观。 4. **GString和字符串操作**:Groovy的GString可以包含表达式,如`${expression}`,...

Global site tag (gtag.js) - Google Analytics