scala> val scores = scala.collection.mutable.Map("Alice" -> 90, "Kim" -> 89, "Bob"-> 98)scores: scala.collection.mutable.Map[String,Int] = Map(Bob -> 98, Alice -> 90, Kim -> 89)
如果只想创建一个空的映射:
scala> val scores = new scala.collection.mutable.HashMap[String, Int]scores: scala.collection.mutable.HashMap[String,Int] = Map()
从上面我们可以知道使用->操作符来创建映射的键值对元素
"Alice" ->90
我们也可以使用下面的方式定义映射:
scala> val scores = Map(("Alice",90), ("Kim",89), ("Bob",98))scores: scala.collection.immutable.Map[String,Int] = Map(Alice -> 90, Kim -> 89, Bob -> 98)
2. 获取映射中的值
可以使用()来查找某个键对应的值:
scala> val bobscores = scores("Bob")bobscores:Int = 98
如果映射中并不包含对应键的值,则会跑出异常,这与Java返回null不同:
scala> val tomScores = scores("Tom")java.util.NoSuchElementException: key not found: Tom at scala.collection.MapLike$class.default(MapLike.scala:228) at scala.collection.AbstractMap.default(Map.scala:59) at scala.collection.MapLike$class.apply(MapLike.scala:141) at scala.collection.AbstractMap.apply(Map.scala:59)...32 elided
所以在获取某个键对应的值之前,要先检查映射中是否存在指定的键:
scala> val tomScores =if(scores.contains("Tom")) scores("Tom") else0tomScores: Int =0
以下是一个快捷写法:
scala> val tomScores = scores.getOrElse("Tom", 0)tomScores:Int = 0
3. 更新映射中的值
在可变映射中,可以更新某个映射的值,也可以添加一个新的键值对:
scala> val scores = scala.collection.mutable.Map("Alice" -> 90, "Kim" -> 89, "Bob"-> 98)scores: scala.collection.mutable.Map[String,Int] = Map(Bob -> 98, Alice -> 90, Kim -> 89)scala> scores("Alice")=100// 更新键值对scala> scores("Tom")=67// 添加键值对scala> println(scores)Map(Bob -> 98, Tom -> 67, Alice -> 100, Kim -> 89)
还可以使用+=操作符来添加多个关系:
scala> scores += ("Bob" -> 78, "Fred" -> 89)res3: scores.type = Map(Bob -> 78, Fred -> 89, Tom -> 67, Alice -> 100, Kim -> 89)
还可以使用-=操作符移除某个键对应的值:
scala> scores -= "Tom"res4: scores.type = Map(Bob -> 78, Fred -> 89, Alice -> 100, Kim -> 89)