Map映射

(一)Map 的定义和创建

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

Map 创建格式:

1.不可变 Map:

scala 复制代码
val mapName: Map[KeyType, ValueType] = Map(key1 -> value1, key2 -> value2,...)

2.可变 Map(需导入scala.collection.mutable.Map):

scala 复制代码
val mapName:mutable.Map[KeyType, ValueType] = mutable.Map(key1 -> value2,...)

(二)Map 的常用方法 - 添加元素

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

添加元素到可变 Map 的格式(+= 操作符):

mapName += (key -> value)

添加元素到可变 Map 的格式(put 方法):

mapName.put(key, value)

scala 复制代码
/*
*    键值对
*    key → value 结构
*
*  map:用来表示键值对格式。映射。
*
*
*
*
**/

//在每一个scala文件中,它会自动导入一些包!

import scala.collection.mutable

// import scala.collection.immutable.Map

// 默认情况下,不写任何的导入语句和包名,Map是表示不可变的,他不能使用 += 的方式添加新的键值对!

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

结果

scala 复制代码
HashMap(42 -> 湖北省, 19 -> 河南省, 14 -> 山西省)

(三)Map 的常用方法 - 查询元素

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

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

val valueOption: OptionValueType=mapName.get(key)

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

结果

scala 复制代码
山西省

(四)Map 的常用方法 - 删除元素(仅针对可变 Map)

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

删除可变 Map 元素的格式(-= 操作符):

mapName -= key

删除可变 Map 元素的格式(remove 方法):

mapName.remove(key)

scala 复制代码
map1 -= 42

(五)Map 的遍历

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

for ((key, value) <- mapName) {

// 操作,如打印 key 和 value

}

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

mapName.foreach { case (key, value) =>

// 操作,如打印 key 和 value

scala 复制代码
for((key,value) <- map1){
  println(s"${value}身份证的前两位编号是${key}")
}

结果

scala 复制代码
河南省身份证的前两位编号是19
山西省身份证的前两位编号是14
相关推荐
学长毕设3 小时前
基于springboot的食品仓库管理系统
java·spring boot·后端
滴滴答答哒3 小时前
ASP.NET Core + FaceRecognitionDotNet 人脸识别实战:DI 单例、特征向量持久化与 1:N 比对
后端·asp.net
captain3766 小时前
MyBatis操作数据库(入门2)
java·数据库·spring boot·后端·spring·mybatis
IT_陈寒7 小时前
Java序列化踩坑记:对象循环引用让我加班两小时
前端·人工智能·后端
泡海椒7 小时前
05-雷达图多维画像-信用评级多维画像
后端
王中阳Go7 小时前
5.27 分钟干完后端和全部测试:一场三小时笔试的五个失分点,四个不在代码上
大数据·数据库·人工智能·后端·大语言模型
大哥43097 小时前
Modbus 的"字序":一个配错就变成天文数字,或者干脆变成 0
后端
岩钧7 小时前
New API 源码解析:一个生产级 AI 网关的架构与实现
后端
学到老活到老7 小时前
第 24 集:配置文件写了 80,Spring Boot 为什么读到 90?
java·后端·spring
用户360055579007 小时前
Kestrel_VLLM - 25 · 全注意力层设备化、整层对拍与访存粒度
后端