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