Scala中的Map映射

43 阅读2分钟

一、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,...)

/*
  01 --->胡同学
  02 --->王同学

  41 → 湖北省
  14 → 山西省

  鄂A → 武汉
  鄂N → 潜江

  键值对
  key→ value 结构

  map:用来表示键值对格式


 */

object map01 {
  def main(args: Array[String]): Unit = {
    val map1=scala.collection.mutable.Map((42 -> "湖北省"),(14 -> "山西省"))
    println(map1)
  }

屏幕截图 2025-12-01 083352.png

// 在每一个scala文件中,它都会自动导入一些包
// import scala.collection.mutable
// import scala.collection.mutable.Map
// 默认情况下,不写任何的导入语句和包名,Map是表示不可变的,它不能使用 += 的方式添加新的键值对

object map01 {
  def main(args: Array[String]): Unit = {
//    val map1=scala.collection.mutable.Map((42 -> "湖北省"),(14 -> "山西省"))
    val map1=mutable.Map((42 -> "湖北省"),(14 -> "山西省"))
    // 添加一个元素
    map1+=(19->"河南省")
    println(map1)
  }

二、Map的常用方法

(1)、添加元素

对于可变 Map,我们可以使用 += 操作符或者 put 方法来添加键值对。

  1. 添加元素到可变 Map 的格式(+= 操作符):mapName += (key -> value)

  2. 添加元素到可变 Map 的格式(put 方法):mapName.put(key, value)

对于不可变 Map,由于其不可修改的特性,我们需要创建一个新的 Map 来包 含新的元素。

  1. 添加元素到不可变 Map 的格式(通过创建新 Map):val newMapName: Map[KeyType, ValueType] = oldMapName + (newKey ->newValue)

(2)、删除元素(仅针对可变Map)

对于可变 Map,我们可以使用 -= 操作符或者 remove 方法来删除键值对。

  1. 删除可变 Map 元素的格式(-= 操作符): mapName -= key
  2. 删除可变 Map 元素的格式(remove 方法): mapName.remove(key)

(3)、查询元素

可以使用 get 方法来查询 Map 中的值,或者直接Map(key)。

查询 Map 元素的格式(get 方法):

val valueOption: Option[ValueType] = mapName.get(key)

返回值是一个 Option 类型,它 可能包含值(如果键存在)或者为 None(如果键不存在)

(4)、Map遍历

可以使用 for 循环或者 foreach 方法来遍历 Map。

  1. 使用 for 循环遍历 Map 的格式:

屏幕截图 2025-12-01 113822.png

  1. 使用 foreach 方法遍历 Map 的格式:

屏幕截图 2025-12-01 113903.png

/*
  常见操作:
    1.添加键值对
    2.删除
    3.查询:根据key去找value
    4.遍历
 */

import scala.collection.mutable

object map02 {
  def main(args: Array[String]): Unit = {
    val map1=mutable.Map((42 -> "湖北省"),(14 -> "山西省"))

    // 1.添加一个元素
    map1 += (19 -> "河南省")

    // 2.删除。删除根据key值来删除
    map1 -= 42

    // 3.14对应哪个省
    val ret=map1.get(14) // 如果找到了,就有值;没有找到就是None
    if (ret.isDefined){
      println(ret.get)
    }
    println(map1)

    // 4.for 遍历
    for ((key,value) <- map1){
      println(s"${value}身份证的前两位编号是${key}")
    }
  }

屏幕截图 2025-12-01 092228.png