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,...)
// Map 映射 表示一种一一对应关系
object map01 {
def main(args: Array[String]): Unit = {
// 创建可变的Map
val scores = scala.collection.mutable.Map("alice" -> 90, "bob" -> 85)
// 添加
scores += ("max" -> 100)
println(scores)
// 创建不可变的Map
val provinceInfo = scala.collection.mutable.Map("42" -> "湖北")
val newInfo = provinceInfo + ("14" -> "山西")
println(newInfo)
}
}
Map 的常用方法
- 添加
对于可变 Map,我们可以使用 += 操作符或者 put 方法来添加键值对。
添加元素到可变 Map 的格式(+= 操作符):mapName += (key -> value)
添加元素到可变 Map 的格式(put 方法):mapName.put(key, value)
添加元素到不可变 Map 的格式(通过创建新 Map):val newMapName: Map[KeyType, ValueType] = oldMapName + (newKey ->newValue)
- 删除
对于可变 Map,我们可以使用 -= 操作符或者 remove 方法来删除键值对。
删除可变 Map 元素的格式(-= 操作符): mapName -= key
删除可变 Map 元素的格式(remove 方法): mapName.remove(key)
- 查询,对应的值
我们可以使用 get 方法来查询 Map 中的值,或者直接Map(key)
查询 Map 元素的格式(get 方法):
val valueOption: Option[ValueType] = mapName.get(key)
- 遍历,把所有数据,依次访问
可以使用 for 循环或者 foreach 方法来遍历 map
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}分")
})
}
}