scala中Map映射

29 阅读1分钟

(一)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" -> 90, "bob" -> 85)
    // 添加
    scores += ("max" -> 100)

    println(scores)

    // 创建不可变的map
    val provinceInfo = scala.collection.immutable.Map("42" -> "湖北")
    // provinceInfo += ("14" -> "山西")
    val newInfo = provinceInfo + ("14" -> "山西")
    println(newInfo)
  }
}

运行结果:

屏幕截图 2025-11-25 102820.png

(二)Map 的常用方法 - 添加元素,查询元素,删除元素以及遍历

对于可变Map

如果我们要给刚才创建的存储学生成绩的可变 Map 中添加一个新学生的成绩,怎么做呢?

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

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

代码如下:

package map

/*
 * 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 += ("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}分")
    })
  }
}

运行结果如下:

屏幕截图 2025-11-25 103945.png