(一)Map 的定义和创建
假设我们要创建一个存储学生姓名和成绩的信息表,应该怎么用 Map 实现 呢?
Map是一种存储键值对的数据结构,每个键在 Map 中是唯一的。在 Scala 中,我们可以使用多种方式创建 Map。
Map 创建格式:
1.不可变 Map:val mapName: Map[KeyType, ValueType] = Map(key1 -> value1, key2 -> value2,...)
2.可变 Map(需导入scala.collection.mutable.Map):val mapName:
mutable.Map[KeyType, ValueType] = mutable.Map(key1 -> value2,...)
代码:
package map
/*
* Map,映射,表示一一对应关系!
*/
object map01 {
def main(args: Array[String]): Unit = {
// 创建可变的map 键-值 对
val scores = scala.collection.mutable.Map("alice" -> 99, "bob" -> 85)
// 添加
scores += ("tom" -> 100)
println(scores)
// 创建不可变的map
val provinceInfo = scala.collection.immutable.Map("42" -> "湖北")
val newInfo = provinceInfo + ("14" -> "山西")
val provinceInfo2 = provinceInfo + ("14" -> "山西")
println(newInfo)
}
}
(二)Map 的常用方法
package map
/*
* Map,映射,表示一一对应关系!
* 1. 添加
* 2. 遍历
* 3. 查值,对应的Key
* 4. 遍历
*/
object map02 {
def main(args: Array[String]): Unit = {
// 创建可变的Map 键-值 对
val scores = scala.collection.mutable.Map("alice" -> 90, "bob" -> 85)
// 1. 添加
scores += ("max" -> 100)
// 2. 删除:删除alice。删除操作是根据key来做的
scores -= "alice"
// 3. 查值:查询bob的分数。rst 是一个Option类型
val rst = scores.get("bob1")
if (rst.isEmpty) {
println("bob1没有成绩")
} else {
println(rst.get)
// 4. 打印scores
println(scores)
// for
for ((key, value) <- scores) {
println(s"${key}, ${value}分")
}
// foreach
scores.foreach {
case (key, value) => println(s"${key}, ${value}分")
}
}
}
}