Scala小白初学Map映射

3 阅读2分钟

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,...)

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)
  }
}

Map,映射,表示一种一一对应关系!

    1. 添加
    1. 删除
    1. 查询,对应的值
    1. 遍历,把所有的数据,依次访问

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

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

添加元素到可变 Map 的格式(put 方法):mapName.put(key, value)

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

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

查询 Map 元素的格式(get 方法): val valueOption: Option[ValueType] = mapName.get(key)

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

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

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

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

(五)Map 的遍历

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

for ((key, value) <- mapName) {
  // 操作,如打印 key 和 value
}

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

mapName.foreach { case (key, value) =>
  // 操作,如打印 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. 查询。查看bob1的分数。rst 是一个Option类型
    val rst = scores.get("bob1")
    if (rst.isEmpty) {
      println("bob1没有成绩")
    } else {
      println(rst.get)
    }
    //4.打印scores
    println(scores)
    for ((key,value)<-scores){
      println(s"${key},${value}分")
    }

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