Groovy的一些Map

                                     Groovy Tip 18 Groovy的一些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 对象里面的值自动由小写转化为大写的时候,这个方法就有可能用得上。
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值