Scala中的Map映射

20 阅读2分钟

Map 的定义和创建

Map是一种存储键值对的数据结构,每个键在 Map 中是唯一的。在 Scala 中,我们可以使用多种方式创建 Map。

package map

/*
*  01 ---> 胡同学
*  02 ---> 王同学
*
*
*  42 → 湖北省
*  14 → 山西省
*
*   鄂A → 武汉
*   鄂N → 潜江
*
*   键值对
*   key → value 结果
*
*   map: 用来表示键值对格式。映射。
* */
object map1 {

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

Map 的常用方法

添加元素

对于可变Map

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

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

import scala.collection.mutable
// import scala.collection.immutable.Map
// 默认情况下,不屑任何的导入语句和包名,Map是表示不可变的,它不能使用 += 的方式添加新的键值对!

object map01 {

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

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

    println(map1)
  }
}

对于不可变 Map

由于其不可修改的特性,我们需要创建一个新的 Map 来包 含新的元素。
添加元素到不可变 Map 的格式(通过创建新 Map):val newMapName: Map[KeyType, ValueType] = oldMapName + (newKey ->newValue)

查询元素

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

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

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

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

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

可变 Map,我们可以使用 -= 操作符或者 remove 方法来删除键值对。
删除可变 Map 元素的格式(-= 操作符): mapName -= key
删除可变 Map 元素的格式(remove 方法):mapName.remove(key)

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

Map 的遍历

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