第四章 映射和元组¶
构造映射¶
不可变映射
val score = Map("Alice"->80)
可变映射
val score = scala.collection.mutable.Map("Alice"-90)
在scala中,映射是一个对偶,对偶是两个值构成的组,这两个值不一定是同一类型。
使用 ->
来创建对偶。
获取映射的值¶
在scala中使用 ()
表示法来查找某个键对应的值。
val bobscore = scores("Bob")
如果映射并不包含请求中使用的键,则会抛出异常。
要检查映射中是否有某个指定的键,可以使用 contains()
方法。
除此之外,我们还可以使用 getOrElse()
方法。
更新映射中的值¶
在可变映射中,可以更新映射值,做法是在=的左侧使用()。
scores("Bob") = 10
也可以使用 +=
来添加多个关系
scores += ("Kate" -> 80)
使用 -=
移除某个键和对应的值。
访问键或者值¶
scores.keySet
scores.values
反转映射¶
for( (k, v) <- map) yield (v, k)
已排序映射¶
val scores = scala.collections.immutable.SortedMap("A"->1, "B"->2)
如果需要按插入顺序访问所有键的话,使用 LinkedHashMap
。
元组¶
元组是不同类型值的集合。
val t = (1, "a", 3.14)
和数组或字符串中的位置不同,元组从1开始而不是0。
通常,使用模式匹配来获取元组的组员。
val (first , second, third ) = t
如果并不是所有的部件都需要,则可以在不需要的位置使用 _
。
val (first, second, _) = t
拉链操作¶
使用元组的原因之一是多个值绑定在一起,以便它们能够一起被处理,这通常可以用 zip()
方法实现。
val symbols = Array("<","-", ">")
val counts = Array(2,10,2)
val paris = symbols.zip(counts)
输出对偶的数组:
Array(("<",2),("-",10),(">",2))
使用 toMap()
可以将对偶的集合转换成映射。