一、映射的重点内容:

1.映射中,前面的值称之为“键”,后面的值称之为“值”

2.映射是对偶的集合,由两个值组成,他们不一定为同一种类型。

3.通过键查询时,映射中并不包含该键,则抛出异常。

3.函数通常用来计算,而映射用来查询。


二、用法

1、创建不可变的映射:

Map("A" -> 1)
//或
HashMap("A" -> 1)

2、创建可变映射

//先引入mutable包中的Map或HasMap
import scala.collection.mutable.Map
Map("A" -> 1)
//或
import scala.collection.mutable.HashMap
HashMap("A" -> 1)

3、创建空映射

//1.注意使用new关键字
//2.指定映射键值的类型
val scores = new scala.collection.mutable.HashMap[String, Int]

 说明:可变的Map是特质,不能被实例化(即不能使用new创建对象)


4、创建一个映射的实际用法

val capital = Map("China" -> "beijing", "America" -> "Washington", "France" -> "Paris")
val americaCapital = captial("America")
//得到的结果是字符串类型的Washington

 之前说过,如果通过键查询时,键不存在于该映射则抛出异常,如下:

val japanCapital = capital("Japan")
//系统抛出异常

 所以我们可以使用contains方法检查键是否存在,如下:

val japanCapital = if(capital.contains("Japan")) capital("Japan") else ""

 或者使用getOrElse方法,如下:

val japanCapital = capital.getOrElse("Japan","")


5、可变映射的方法:


import scala.collection.mutable.Map
val scores = Map("Alice" -> 1)
//更新Alice键对应的值
scores("Alice") = 2
//增加新的键值对
scores("Bob") = 3
//将其他的Map键值对映射关系合并到本Map之后
val newScores = Map("Fred" -> 4)
scores += newScores
//或
scores += ("Fred" -> 4)
//删除某个键值对
scores -= "Alice"

6、迭代:

for((k,v) <- 映射) 处理 k,v

//打印映射
val myMap = Map("A" -> 1, "B" -> 2, "C" -> 3)
for((k,v) <- myMap) println(k+" "+v)
//只打印键
for(k <- myMap.keySet) println(k)
//只打印值
for(v <- myMap.values) println(v)
//反转映射
for((k,v) <- myMap) yield (v,k)