主要内容
- Map的创建
- 方式1:to
- 方式2:Pair
- Map值的读取
- 方式1:[] 找不到会返回null
- 方式2:getOrDefault()
- 方式3:getOrElse()
- 方式4:getValue()
- 相关代码
- Map集合遍历
- 方式1:forEach
- 方式2:forEach{ K,V -> }
- 方式3:forEach{ (K,V) -> }
- 方式4:for
- 相关代码
- 可变Map集合学习
- 创建可变Map:mutableMapOf
- 可变Map:添加、删除
- 可变Map:getOrPut()
- 相关代码
Map的创建
方式1:to
val mMap1:Map<String,Double> = mapOf("Derry" to (534.4),"Kevin" to 45.6)
方式2:Pair
val mMap2 = mapOf(Pair("Derry",534.4),Pair("Kevin",45.6))
Map值的读取
val mapOf = mapOf("Derry" to 123, "Kevin" to 654)
方式1:[] 找不到会返回null
//背后对[]运算符重载
mapOf["Derry"]
//get与[]是等价的
mapOf.get("Derry")
//map 通过key找,如果找不到返回null,不会崩溃
mapOf["xxx"]
方式2:getOrDefault()
mapOf.getOrDefault("Derry",0) //map中存在
mapOf.getOrDefault("Derry2",0)//map中不存在
方式3:getOrElse()
参数2是lambda表达式
mapOf.getOrElse("Derry"){ -1 }//map中存在
mapOf.getOrElse("Derry2"){ -1 }//map中不存在//map中不存在
方式4:getValue()
mapOf.getValue("Derry")
//如果key不存在程序会崩溃,尽量不要使用方式
mapOf.getValue("xxx")
相关代码
map获取方式尽量使用方式2、方式3
完整代码如下
fun main() {
val mapOf = mapOf("Derry" to 123, "Kevin" to 654)
//方式1 [] 找不到会返回null
println("方式1 []")
println(mapOf["Derry"])//背后对[]运算符重载
println(mapOf.get("Derry"))//get与[]是等价的
println(mapOf["xxx"])//map 通过key找,如果找不到返回null,不会崩溃
//方式2 getOrDefault
println()
println("方式2 getOrDefault")
println(mapOf.getOrDefault("Derry",0))
println(mapOf.getOrDefault("Derry2",0))
//方式3 getOrElse 参数2是lambda表达式
println()
println("方式3 getOrElse")
println(mapOf.getOrElse("Derry"){ -1 })
println(mapOf.getOrElse("Derry2"){ -1 })
//方式4 getValue 与Java一样 会崩溃,尽量不要使用方式
println()
println("方式4 getValue")
println(mapOf.getValue("Derry"))
//println(mapOf.getValue("xxx"))
}
运行结果
方式1 []
123
123
null
方式2 getOrDefault
123
0
方式3 getOrElse
123
-1
方式4 getValue
123
Map集合遍历
方式1:forEach
mapOf.forEach {
//it 内容 每一个元素(K 和 V)
//it 类型 Map.Entry<String,Int>
println("K:${it.key} V:${it.value}")
}
方式2:forEach{ K,V -> }
mapOf.forEach { key, value ->
//把默认的it覆盖
println("key:${key} value:${value}")
}
方式3:forEach{ (K,V) -> }
mapOf.forEach { (key, value) ->
//key:String
//value:Int
println("key:${key} value:${value}")
}
方式4:for
for (item in mapOf) {
//item 内容 每一个元素(K 和 V)
//item 类型 Map.Entry<String,Int>
println("K:${item.key} V:${item.value}")
}
相关代码
fun main() {
val mapOf = mapOf("Derry" to 123, Pair("Kevin", 456), "Leo" to 789)
//方式1
println("方式1")
mapOf.forEach {
//it 内容 每一个元素(K 和 V)
//it 类型 Map.Entry<String,Int>
println("K:${it.key} V:${it.value}")
}
//方式2
println()
println("方式2")
mapOf.forEach { key, value ->
//把默认的it覆盖
println("key:${key} value:${value}")
}
//方式3
println()
println("方式3")
mapOf.forEach { (key, value) ->
//key:String
//value:Int
println("key:${key} value:${value}")
}
//方式4
println()
println("方式4")
for (item in mapOf) {
//item 内容 每一个元素(K 和 V)
//item 类型 Map.Entry<String,Int>
println("K:${item.key} V:${item.value}")
}
}
运行结果
方式1
K:Derry V:123
K:Kevin V:456
K:Leo V:789
方式2
key:Derry value:123
key:Kevin value:456
key:Leo value:789
方式3
key:Derry value:123
key:Kevin value:456
key:Leo value:789
方式4
K:Derry V:123
K:Kevin V:456
K:Leo V:789
可变Map集合学习
创建可变Map:mutableMapOf
val mutableMapOf = mutableMapOf("Derry" to 123, Pair("Kevin", 456), Pair("Dee", 789))
可变Map:添加、删除
mutableMapOf += "AAA" to (111) //map增加AAA
mutableMapOf += "BBB" to 1234 //map增加BBB
mutableMapOf -= "Kevin" //map移除Kevin
mutableMapOf["CCC"] = 888 //map增加CCC
mutableMapOf.put("DDD", 999)//put 和[]等价
可变Map:getOrPut()
//getOrPut 没有的情况下
//如果整个map集合里面没有FFF的key元素,我就帮你先添加到map集合中,然后再从map中获取
val orPut = mutableMapOf.getOrPut("FFF") { 555 }
println("orPut:${orPut}")
//getOrPut 有的情况下
//发现Derry的Key是有的,那么久直接获取出来,相当于666就失效了
val orPut1 = mutableMapOf.getOrPut("Derry") { 666 }
println("orPut1:${orPut1}")
相关代码
fun main() {
val mutableMapOf = mutableMapOf("Derry" to 123, Pair("Kevin", 456), Pair("Dee", 789))
//1、可变集合的操作 +=[] put
mutableMapOf += "AAA" to (111)
mutableMapOf += "BBB" to 1234
mutableMapOf -= "Kevin"
mutableMapOf["CCC"] = 888
mutableMapOf.put("DDD", 999)//put 和[]等价
//2、getOrPut 没有的情况下
//如果整个map集合里面没有FFF的key元素,我就帮你先添加到map集合中,然后再从map中获取
val orPut = mutableMapOf.getOrPut("FFF") { 555 }
println("orPut:${orPut}")
//3、getOrPut 有的情况下
//发现Derry的Key是有的,那么久直接获取出来,相当于666就失效了
val orPut1 = mutableMapOf.getOrPut("Derry") { 666 }
println("orPut1:${orPut1}")
}
运行结果
orPut:555
orPut1:123