Gradle系列知识(三)——Groovy的数据结构Map

一、Map的定义和访问
def students = ["001":"Tom","002":"Jack","003":"Rose","004":"Tim"]

println students['001']
println students."002"

输出结果

Tom
Jack
二、添加元素
def students = ["001":"Tom","002":"Jack","003":"Rose","004":"Tim"]
//添加元素
students."005" = "Lily"
println students
[001:Tom, 002:Jack, 003:Rose, 004:Tim, 005:Lily]
三、遍历Map
def students = ["001":"Tom","002":"Jack","003":"Rose","004":"Tim","005":"Lily"]

students.each {
    println "key ="+it.key+"   value ="+it.value
}

输出结果

key =001   value =Tom
key =002   value =Jack
key =003   value =Rose
key =004   value =Tim
key =005   value =Lily

另外还有几种遍历方式

//用键值对的方式
students.each {def key,def value ->
    println "key=${key}"+"    value=${value}"
}
//用entry对象的方式
students.each {def student ->
    println "key=${student.key}"+"  value=${student.value}"
}
//带索引的方式
students.eachWithIndex{ def student,int index->
    println "index=${index}"+"  key=${student.key}"+"    value=${student.value}"
}
students.eachWithIndex{ def key,def value,int index->
    println "index=${index}"+"  key=${key}"+"    value=${value}"
}
四、查找
def students = ["001":"Tom","002":"Jack","003":"Rose","004":"Tim","005":"Lily","006":"Jack"]

//单个查询
def result = students.find {
    return  it.value == "Rose"//这里跟前面的list一样,闭包里面有默认参数it是遍历的Map中的元素Entry
}
println result

//嵌套查找
//我们现在需要查找名称是Jack的所有学号

def num = students.findAll {def student->
    return student.value == "Jack"
}.collect {
    return it.key
}

println num.toListString()

我们可以通过collect 集合收集迭代,使用闭包作为变换器将每个元素转换为新值。上面代码的第一步就是通过findAll 查找到所有value是Jack的student,第二步就是通过collect 将第一步查找的结果的student转化为学号key,看看输出结果:

003=Rose
[002, 006]

Groovy 还支持分组查询

def students = ["001":"Tom","002":"Jack","003":"Rose","004":"Tim","005":"Lily","006":"Jack"]


def result = students.groupBy {
    return it.value == "Jack"?"group_jack":"group_default"
}

println result

输出结果

[group_default:[001:Tom, 003:Rose, 004:Tim, 005:Lily], group_jack:[002:Jack, 006:Jack]]
五、删除和排序

删除跟List 的API一样,这里不赘述了,排序用法跟List也差不多,只是Map调用sort排序后悔生成一个新的对象,原对象不会有任何改变,所以我们必须用引用接收sort的返回值

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值