Scala中的Map映射

32 阅读3分钟

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

package map

/*
*   01--->张同学
*   02--->朱同学
*
*    42 -> 湖北
*    14 -> 山西
*
*    鄂A -> 武汉
*    鄂N -> 潜江
*
*    key -> value 结构
*
*
*    map: 用来表示建值对格式
*
*
* */
object map01 {

  def main(args: Array[String]): Unit = {
    val map1 = scala.collection.mutable.Map( (42 -> "湖北省"),(14 -> "山西省"))
    println(map1)

  }
}

对于可变的Map:我们可直接使用 += 的方式进行添加,但是一般默认情况下是不可变Map,我们可以

package map

/*
*   01--->张
*   02--->朱
*
*
*    42 -> 湖北
*    14 -> 山西
*
*    鄂A -> 武汉
*    鄂N -> 潜江
*
*    key -> value 结构
*
*
*    map: 用来表示键值对格式
*
*
* */
// 在每一个scala文件中,它都会自动导入一些包!

import scala.collection.mutable.Map

//import scala.collection.immutable.Map

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

object map01 {

  def main(args: Array[String]): Unit = {
    //
    val map1 = scala.collection.mutable.Map( (42 -> "湖北省"),(14 -> "山西省"))

    // 添加一个元素
    map1 += ( 19 -> "河南省")
    println(map1)

  }
}

ps:我们首先创建了一个不可变的 Map,它包含了两个键值对,键是学生姓名(字符串类型),值是成绩(整数类型)。然后我们导入了可变 Map 类,并创建了一个可变的 Map。同学们注意,不可变 Map 创建后不能修改,而可变 Map 可以进行添加、删除等操作。

2.Map 的常用方法

2-1:添加元素

package map

/*
*  常见操作
*    1.添加键值
*    2.删除
*    3.查询:根据key去找value
*    4.遍历
*
*
* */
import scala.collection.mutable

//import scala.collection.immutable.Map

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

object map02 {

  def main(args: Array[String]): Unit = {
    //
    //val map1 = scala.collection.mutable.Map( (42 -> "湖北省"),(14 -> "山西省"))
    val map1 = mutable.Map( (42 -> "湖北省"),(14 -> "山西省"))

    // 1.添加一个元素
    // val map2 = map1 + (19 -> "河南省")
    map1 += ( 19 -> "河南省")
  }
}

2-2:删除元素

package map

/*
*  常见操作
*    1.添加键值
*    2.删除
*    3.查询:根据key去找value
*    4.遍历
*
*
* */
import scala.collection.mutable

//import scala.collection.immutable.Map

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

object map02 {

  def main(args: Array[String]): Unit = {
    //
    //val map1 = scala.collection.mutable.Map( (42 -> "湖北省"),(14 -> "山西省"))
    val map1 = mutable.Map( (42 -> "湖北省"),(14 -> "山西省"))

    // 2.删除,删除根据key值来删除
    map1 -= 42
  }
}

2-3:查询元素

package map

/*
*  常见操作
*    1.添加键值
*    2.删除
*    3.查询:根据key去找value
*    4.遍历
*
*
* */
import scala.collection.mutable

//import scala.collection.immutable.Map

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

object map02 {

  def main(args: Array[String]): Unit = {
    //
    //val map1 = scala.collection.mutable.Map( (42 -> "湖北省"),(14 -> "山西省"))
    val map1 = mutable.Map( (42 -> "湖北省"),(14 -> "山西省"))
    // 3.查询,14对应是哪个省?
    val ret = map1.get(14)  //
    if(ret.isDefined) {
      println(ret.get)
    }
  }
}

2-4:遍历

package map

/*
*  常见操作
*    1.添加键值
*    2.删除
*    3.查询:根据key去找value
*    4.遍历
*
*
* */
import scala.collection.mutable

//import scala.collection.immutable.Map

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

object map02 {

  def main(args: Array[String]): Unit = {
    //
    //val map1 = scala.collection.mutable.Map( (42 -> "湖北省"),(14 -> "山西省"))
    val map1 = mutable.Map( (42 -> "湖北省"),(14 -> "山西省")
    // 4.for 遍历 
    for((key , value) <- map1){
      println(s"${value}身份证的前两位编号是${key}")
    }
  }
}