scala中map的定义与使用

35 阅读2分钟

在我们生活中,常常需要将一些相关的信息关联起来存储和查询,比如学 生姓名和对应的学号、城市名称和其所在的省份等。在编程中,Scala 为我们提供了一种非常实用的数据结构来处理这种关联关系,那就是 Map。

1:Map 的定义和创建

假设我们要创建一个存储学生姓名和成绩的信息表,应该怎么用 Map 实现 呢?

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

2:Map 创建格式:

1.不可变 Map:val mapName: Map[KeyType, ValueType] = Map(key1 -> value1, key2 -> value2,...)

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

mutable.Map(Key)Type, ValueType = mutable.Map(key1 -> value2,...)

3:Map的常用方法

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

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

2:删除元素: 与添加元素同理: 使用map1 -= ("*" -> *** )

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

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

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

4:map的遍历(通过for循环将map中的元素都输出一遍)

for((a,b) <- map1){

println(s"a,{a},{b}")

} map1.foreach({

case (key,value) => {

println(s"key,{key},{value}")

}

})

package txy

object Demo21 {
  def main(args: Array[String]): Unit = {
    //Map:映射
    //键值对,键不能有相同的
    //(key,value)
    val map1 = scala.collection.mutable.Map(("沈冲" -> "狗"), ("涂新宇" -> "猪"), ("蔡徐坤" -> "鸡"))
    //与set相同,默认是无法更改的Map()->scala.collection.immutable.Map()
    println(map1)
    map1 += ("马嘉琪" -> "马")
    println(map1)
    //1:添加
    map1 += ("蔡徐坤" -> "鸡")
    //2:删除
    val key = "沈冲"
    val ret = map1.get(key)
    if(ret.isDefined){
      println(s"${key}存在于map1中")
    }else{
      println("s{key}不存在于map1中")
    }
    println(ret)
    //3:查询元素
    for((a,b) <- map1){
      println(s"${a},${b}")
    }
    map1.foreach({
      case (key,value) => {
        println(s"${key},${value}")
      }
    })
    //4:遍历map:for 循环输出所有
  }
}

输出结果

image.png