映射和元组
1、scala中,映射是对偶的集合,可以看做将键映射到值的函数,区别在于函数一般用于计算,而映射只做查询。
val scores=Map("Alice"->10,"Bob"->3,"Cindy"->8) 不可变的映射
val scores=new scala.collection.mutable.HashMap("Alice"->10,"Bob"->3,"Cindy"->8) 可变的映射
val scores=new scala.collection.mutable.HashMap(String,Int) 无初始值的可变映射
2、获取映射中的值
val bobsScore=scores("Bob")
检查映射中是否存在指定的健:scores.contains("bob")或者scores.getOrElse("Bob",0)如果包含"Bob",则返回值,否则返回0
3、更新增加映射中的值
scores("bob")=10
scores +=("fred"->1)
scores -="Alice"
但是对于不可变的映射,上面的就不能使用。但是我们可以用其为新的映射赋值。
val newsScores=scores+("Bob"->10,"Fred"->7)
4、迭代映射
for((k,v)<-映射) 处理v,k :比如说交换键和值的位置
for((k,v)<-映射) yield (v,k)
如果只需要访问健或者值:
scores.KeySet scores.values
5、元组的概念
元组是不同类型的值的聚集
val t=(1,1.34,"res") 通过val s=t._3 访问
val (f,s,th)=t //将t的值分别赋给f,s,th
元组可以用于函数需要返回不止一个值的情况下 "New York".partition(_.isUpper)
返回
(String, String) = (NY,ew ork)
使用元组的原因是能把多个值绑在一起,以便它们能够一起被处理,通常利用zip方法。
{ val symbols=Array("<","-",">")
| val counts=Array(2,10,2)
| val pairs=symbols.zip(counts)
| for((s,n)<- pairs) Console.print(s*n)
| }