scala:Map映射

24 阅读2分钟

Map 的定义和创建

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

代码示范:

package map

/**
 * 42→湖北省
 * 14→山西省
 *
 * 鄂A→武汉
 * 鄂N→潜江
 *
 *
 * map:(020->)
 * 键值对
 * key → value 结构
 *
 * map: 用来表示键值对格式
 */
object map01 {


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

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

/**
 * 42→湖北省
 * 14→山西省
 *
 * 鄂A→武汉
 * 鄂N→潜江
 *
 *
 * map:(020->)
 * 键值对
 * key → value 结构
 *
 * map: 用来表示键值对格式
 */
// 在每一个scala文件中,它都会自动导入一些包!
 import scala.collection.mutable
 // import scala.collection.immutable.Map
// 默认情况下,不写任何的导入语句和包名,Map是表示不可变的,它不能使用 += 的方式添加新的键值对
object map02 {


  def main(args: Array[String]): Unit = {
    //
    //val map1=Map((42->"湖北省"),(14->"山西省"))
   val map1=mutable.Map((42->"湖北省"),(14->"山西省"))
    // 添加一个元素
    map1 +=(19->"河南省")
    println(map1)
  }
}

Map 的常用方法

1. 添加键值对

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

对于不可变 Map,由于其不可修改的特性,我们需要创建一个新的 Map 来包 含新的元素。

2. 删除

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

3. 查询:根据key去找value

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

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

4. 遍历

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

代码示范:

package map

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

// import scala.collection.immutable.Map
// 默认情况下,不写任何的导入语句和包名,Map是表示不可变的,它不能使用 += 的方式添加新的键值对
object map03 {


  def main(args: Array[String]): Unit = {
    //
    //val map1=Map((42->"湖北省"),(14->"山西省"))
   val map1=mutable.Map((42->"湖北省"),(14->"山西省"))
    // 1.添加一个元素
  //  val map2=map1 + (19->"河南省")
    map1 +=(19->"河南省")
  //  2. 删除。删除根据key来删除
    map1 -=42
    // 3.14对应的是哪个省?
    val ret=map1.get(14)// 如果找到了,就有值!没有找到就是None
    if(ret.isDefined){
      println(ret.get)
    }
    println(map1)
    // 4. for遍历
    for((key, value) <-map1){
      println(s"${value}身份证的前两位编号是${key}")
    }
  }
}