Scala - 映射
映射分为可变映射mutable.Map和不可变映射Map。
Map
定义Map,通过 ->
符合连接键值对。
// 定义
val map = Map("a" -> 1, "b" -> 2, "c" -> 3)
println(map) // Map(a -> 1, b -> 2, c -> 3)
读取元素,通过get的话,当有值的时候,得到Some,没有值的话,得到None。
由于是Some,需要再加一个get才可以获取具体的值,也可以通过(key)得到具体的值。
如果不确定值是否存在,可以用getOrElse方法,后面带默认值,没有对应的值的话,就返回这个默认值。
// 读取
println(map.get("a")) // Some(1)
println(map.get("a").get) // 1
println(map("a")) // 1
println(map.get("d")) // None
println(map.getOrElse("d", 0)) // 0
循环遍历:
可以直接打印每个键值对,也可以在循环里通过_1,_2获取键值对。
可以通过keys获取键集合,也可以通过values获取值集合
map.foreach(println) // (a,1) (b,2) (c,3)
map.foreach(e => println(e))// (a,1) (b,2) (c,3)
map.foreach(e => {
println(e._1 + "->" + e._2) // a->1 b->2 c->3
})
map.keys.foreach(println) //a b c
map.values.foreach(println) // 1 2 3
mutable.Map 通过mutable.Map来定义
val map = mutable.Map("a" -> 1, "b" -> 2, "c" -> 3)
println(map) // Map(b -> 2, a -> 1, c -> 3)
读取和循环遍历和上面一样,不做累述。
赋值:
map.+=("d" -> 4) // 等同map += ("d" -> 4)
println(map) // Map(b -> 2, d -> 4, a -> 1, c -> 3)
map("e") = 5
println(map) // Map(e -> 5, b -> 2, d -> 4, a -> 1, c -> 3)
map.put("f", 6)
println(map) // Map(e -> 5, b -> 2, d -> 4, a -> 1, c -> 3, f -> 6)
map.update("g", 7) // 不存在则新增
println(map) // Map(e -> 5, b -> 2, d -> 4, a -> 1, c -> 3, f -> 6)
【Scala - 映射】删除:
map -= "g"
println(map) // Map(e -> 5, b -> 2, d -> 4, a -> 1, c -> 3, f -> 6)
map.remove("f")
println(map) // Map(e -> 5, b -> 2, d -> 4, a -> 1, c -> 3)
推荐阅读
- 思科路由映射表控制BGP路径的方法和实例
- Scala判断字符串是否相等
- SpringMVC(6)(注解的处理器映射器和适配器)
- Scala|Scala 从Array数组的构造过程理解apply()
- scala基础(一)
- Scala学习笔记|Scala学习笔记 A2/L1篇 - 注解 Annotations
- ElasticSearch实战--映射(三)
- 多视角三维模型纹理映射 01
- Ubuntu16.04/Scala2.11.8安装教程
- scala|scala DateTime 库