scala教程:Map(不可变)

介绍

Scala 中的 Map 和 Java 类似,也是一个散列表,它存储的内容也是键值对(key-value)映射

不可变的 Map,定义好后,将 不能添加、修改、删除 key-value

创建

val 名字:Map[key类型,value类型] = Map(key1->value1,key2->value2,...)

可以不加泛型,表示多种数据类型

val 名字:Map = Map(key1->value1,key2->value2,...)

例子

def main(args: Array[String]): Unit = {
  //创建
  val map:Map[String,Int] = Map("李雷"->20,"韩梅梅"->19,"lucy"->21)

  println(map)
}

根据key访问value

方式一

map名.getOrElse(key,默认值)

解释:根据 key 取对应的 value值;如果key不存在,那么返回默认值

例子
def main(args: Array[String]): Unit = {
  //创建
  val map:Map[String,Int] = Map("李雷"->20,"韩梅梅"->19,"lucy"->21)
  println(map.getOrElse("李雷",0)) //取出李雷对应的value值
  println(map.getOrElse("李小雷",0)) //李小雷不存在,返回0
}

方式二

map名(key)

解释:根据 key 取对应的 value值;如果key不存在,那么报错

例子
def main(args: Array[String]): Unit = {
  //创建
  val map:Map[String,Int] = Map("李雷"->20,"韩梅梅"->19,"lucy"->21)

  println(map("李雷"))
  println(map("李小雷"))

}

不存在李小雷,报错如下:

java.util.NoSuchElementException: key not found: 李小雷

遍历key-value

第一步:全写

//创建
val map:Map[String,Int] = Map("李雷"->20,"韩梅梅"->19,"lucy"->21)

// 形参类型是tuple,第一个元素是key,第二个元素是value
def fp(  item:(String,Any) ):Unit={
  println(item._1+"--"+item._2)
}
map.foreach(  fp )

第二步:简写

//创建
val map:Map[String,Int] = Map("李雷"->20,"韩梅梅"->19,"lucy"->21)

def fp(  item:(String,Any) )= println(item._1+"--"+item._2)

map.foreach(  fp )

第三步:lambda表达式

//创建
val map:Map[String,Int] = Map("李雷"->20,"韩梅梅"->19,"lucy"->21)
//遍历
map.foreach((item:(String,Int)) => println( item._1+"--"+item._2 ))

只遍历key

def main(args: Array[String]): Unit = {
  //创建
  val map:Map[String,Int] = Map("李雷"->20,"韩梅梅"->19,"lucy"->21)

  for(item <- map.keys){
    println(item)
  }
}

只遍历value

def main(args: Array[String]): Unit = {
  //创建
  val map:Map[String,Int] = Map("李雷"->20,"韩梅梅"->19,"lucy"->21)

  for(item <- map.keys){
    println(item)
  }
  for(item <- map.values){
    println(item)
  }
}

原文出处:/show_1IX1DmAHcJx3.html