导入
在 Scala 中,集合体系与 Python 不同:没有直接名为 Set 的需导入基础类------Set 是 Scala 标准库的核心集合(位于 scala.collection 包下),默认无需手动导入即可使用。但需注意 Scala 的 Set 分为不可变(默认)和可变两种。本文将具体从格式定义到常见操作来讲述集合 Set。
一、Map的定义和创建
定义
Map(映射)是Scala中一种存储键值对(key-value)的数据结构,每个键在Map中是唯一的,通过键可以快速查找到对应的值。
好处
- 快速查找:通过键可以在常数时间内访问对应的值
- 数据关联:能够建立有逻辑关联的数据结构
- 类型安全:编译时检查键值类型
- 灵活性:支持可变和不可变两种实现方式
语法
scala
// 不可变Map
val mapName: Map[KeyType, ValueType] = Map(key1 -> value1, key2 -> value2,...)
// 可变Map (需导入scala.collection.mutable.Map)
val mapName: mutable.Map[KeyType, ValueType] = mutable.Map(key1 -> value2,...)
二、Map的基本操作
案例一:可变Map与不可变Map的基本操作
代码
scala
package map
/*
* 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.immutable.Map("42" -> "湖北")
// provinceInfo += ("14" -> "山西")
val newInfo = provinceInfo + ("14" -> "山西")
println(newInfo)
}
}
结果展示

代码分析
- 可变Map创建 :使用
scala.collection.mutable.Map创建可变Map,初始包含"alice"和"bob"的成绩 - 添加操作 :使用
+=操作符直接向可变Map添加"max"的成绩,这会修改原Map - 不可变Map创建 :使用
scala.collection.immutable.Map创建不可变Map - 不可变Map添加 :通过
+操作符创建新的Map,原Map保持不变,体现了不可变集合的特性 - 键值对语法 :使用
->操作符创建键值对,语法清晰直观
案例二:Map的增删改查操作
代码
scala
package map
9
/*
*
* Map, 映射,表示一种一一对应关系
* 1. 添加
* 2. 删除
* 3. 查询,对应的值
* 4. 遍历,把所有的数据,依次访问
* */
object map02 {
def main(args: Array[String]): Unit = {
// 创建可变的Map 键 值 对
val scores = scala.collection.mutable.Map("alice" -> 90, "bob1" -> 85)
// 1. 添加
scores += ("map" -> 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}分")
})
}
}
结果展示

代码分析
- 添加元素 :使用
+=操作符添加新的键值对"map" -> 100 - 删除元素 :使用
-=操作符根据键删除"alice"对应的条目 - 查询元素 :
- 使用
get方法查询,返回Option类型,安全处理可能不存在的键 - 通过
isEmpty判断是否存在,避免空指针异常 - 使用
get方法从Option中提取实际值
- 使用
- 遍历方式一 :使用
for循环配合模式匹配,直接解构键值对 - 遍历方式二 :使用
foreach方法配合case语句,函数式风格遍历 - 输出格式 :使用字符串插值
s"${key}, ${value}分"格式化输出
三、Map的常用方法详解
添加元素
可变Map:
+=操作符:map += (key -> value)put方法:map.put(key, value)
不可变Map:
+操作符:val newMapName: Map[KeyType, ValueType] = oldMapName + (newKey ->newValue)(创建新Map)
查询元素
get方法:val valueOption: Option[ValueType] = mapName.get(key),返回Option[ValueType],安全查询- 直接访问:
map(key),键不存在时抛出异常
删除元素(仅可变Map)
-=操作符:mapName -= keyremove方法:mapName.remove(key)
遍历Map
scala
// for循环遍历
for ((key, value) <- map) {
println(s"$key: $value")
}
// foreach方法遍历
map.foreach { case (key, value) =>
println(s"$key: $value")
}
四、总结
通过本篇文章的学习,我们全面掌握了Scala中Map集合的核心知识:
核心要点
- 两种Map类型:可变Map允许原地修改,不可变Map操作后返回新集合
- 安全查询 :使用
get方法配合Option类型避免运行时异常 - 多种遍历 :支持
for循环和foreach两种遍历方式 - 丰富操作:提供完整的增删改查API