Map

14 阅读1分钟

在scala里面map叫做映射,它表示一种一一对应关系,举个例子,当我们需要创建可变的map并且要在里面添加元素,还要添加一个不可变的map,那就可以输入以下代码:

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("12" -> "河北")
    val newInfo = provinceInfo + ("14" -> "山西")
    println(newInfo)
  }
}

运行结果如图所示:

image.png 当我们添加可变的map时候,需要它有多个功能:

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

  }
}

运行结果如图所示:

image.png 在上述代码中,还可以添加以下代码:

// 4. 打印scores
println(scores)
// for
for ((key, value) <- scores){
  println(s"${key}, ${value}分")
}

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

运行结果如图所示:

image.png