第二章 gradle自动化构建系列文章 之 Groovy中的Map

第二章 gradle自动化构建系列文章 之 Groovy中的Map

< center>jenkins

查看 “Android自动化构建系列” 全部文章

  • Map的规范和list类似,与list一样,Map保证可以通过下标来获取或者设置值,不同的是map可以使用任何类型作为下标操作符的参数,而list仅仅支持整数,list知道list中元素的顺序,而map一般不知道,特殊的map如java.util.TreeMap也可以知道他们的key的顺序。

map的定义

//采用默认方式定义
def bmap=[a:12,b:30]
println bmap.toMapString()
println bmap.getClass()

运行结果:

map的key可以是任意类型的,通常是字符串类型或者number类型的,如果是字符串类型,应当使用单引号的不可变类型字符串,省略单引号时,编译器将自动转换为不可变字符串

默认定义的类型是 LinkedHashMap ,如果我们想要定义其他类型的

//采用强类型方式定义
TreeMap map =[a:12,b:20]
println map.toMapString()
println map.getClass()

def amap=[a:12,b:30] as TreeMap
println amap.toMapString()
println amap.getClass()

运行输出结果:

一般情况下key的类型都是字符串,在声明map的时候可以忽略字符串标记(单引号或者双引号):assert [“a”:1] == [a:1],如果key没有包含特殊字符(需要符合有效表示规则)而且不是groovy的关键字,那么允许通过这种便利的方式进行声明。

这种方式也有不便的地方,例如,本地变量的内容被用作key。假如有一个本地变量x,它的内容为’a’,由于[x:1]等价于[‘x’:1],那么如何保证它等于[‘a’:1]呢?通过把把符号放在圆括号中,强制让groovy将符号看做一个表达式:

	def x = 'a'
	assert [x:1] == ['x':1]
	assert ['(x)'] == ['x':1]	
map获取
  • Groovy中有三种从map中获取对象的方法:

    • 使用下表操作符,因为map实现了getAt方法;

    • 使用点语法像使用属性那样来获取对象;

    • 使用get()方法,可以传递一个缺省值,在map中没有相应的key时,允许返回缺省值,如果没有缺省值放回null,如果get(key,default)被调用时,key没有找到,缺省值返回,那么key:defualt对将被增加到map中。

        def map == [a:1,b:2,c:3]
        
        assert map['a']         == 1
        assert map.a            == 1
        assert map.get('a')     == 1
        assert map.get('a',0)   == 1
        
        assert map['d']         == null
        assert map.d            == null
        assert map.get('d')     == null
        
        assert map.get('d',0) == 0
        assert map.d          == 0
        
        map['d']        = 1         
        assert map.d    == 1
        map.d       = 2
        assert map.d    == 2
      

      将值分配给map时可以使用下标操作符或者点语法,在使用点语法时,如果key包含了特殊字符,需要使用字符串符号括起来。

        map = ["a.b" : 1]
        assert map.'a.b'    == 1   
      

如果仅仅写成map.a.b,这里是不会正常工作的,这其实等价于map.getA().getB().

常用的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值