Map映射

28 阅读1分钟

一. Map 的定义和创建

Map是一种存储键值对的数据结构,每个键在 Map 中是唯一的。在 Scala 中,我们可以使用多种方式创建 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,...)

def main(args: Array[String]): Unit = {
  val map1 = Map(("alice" -> 90), ("bob" -> 80), ("bob" -> 100))
  // bob这个键有重复,只保留一个
  println(map1)
}

二. Map 的常用方法

1. 添加元素

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

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

val map1 = scala.collection.mutable.Map(("alice" -> 90), ("bob" -> 80), ("bob" -> 100))
// bob这个键有重复,只保留一个

// 1. 添加
map1 += (("judy" -> 90))

println(map1)

2. 查询元素

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

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

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

val key = "alice"
val ret = map1.get(key)
if(ret.isDefined){
  println(s"${key} 对应的值是:${ret.get}")
} else {
  println(s"${key} 不存在")
}

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

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

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

val map1 = scala.collection.mutable.Map(("alice" -> 90), ("bob" -> 80), ("bob" -> 100))

map1 -= "bob"

println(map1)

三. Map 的遍历

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

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

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

  // 操作,如打印 key 和 value

}

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

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

  // 操作,如打印 key 和 value

}

for((a,b) <- map1){
  println(s"${a}, ${b}")
}

map1.foreach{
  case (key,value) => {
    println(s"${key}, ${value}")
  }
}