第四章 元组和映射 (快学scala)
4.1构造映射
A.不可变映射
val scores=Map("Alice"->10,"Bob"->3,"Cindy"->8)
B.可变映射
val score=scala.collection.mutable.Map("Alice"->10,"Bob"->3,"Cindy"->8)
C.空的映射,选定映射实现并给定映射参数
val score=scala.collection.mutable.HashMap[String,Int]
4.2获取映射的值
val bobsScore=scores("Bob")
检查映射中含有某个指定的键,可以用contains方法
val bobScores=if (score.contains("Bob")) score("Bob") else 0
快捷写法
val bobsScore=scores.getorElse("Bob",0)
注意:映射.get(键)这样的调用返回一个Option对象,要么是some(键对应的值),要么是None
4.3 更新映射中的值(可变映射)
val score=scala.collection.mutable.Map("Alice"->10,"Bob"->3,"Cindy"->8)
score+=("Bob"->15)
score+=("Fride"->20)
或者 score+=("Bob"->15,"Fride"->20)
4.4迭代映射
for((k,v)<-映射)print(k,v)
for((k,v)<-score)print(k,v)
score.keySet()//类似set("Alice","Bob","Cindy")的集
for(v<-score.values)print(v+" ")
for((k,v)<-score)yield(v,k)
4.7 元组:不同类型的值的聚集,对偶是元组的最简单的形态
val t=(1,3.14,"Fride")
可以用方法 _1,_2,_3访问其组元
t._1 /t _1 t._2/t _2 t._3/t _3
使用匹配模式获取元组的组元
val (first,second,third)=t / val (first,second,_)=t
4.8 拉链操作(将集合组成映射)
val simples=Array("<","-",">")
val counts=Array(2,10,2)
val pairs=simples.zip(counts)
pairs=Array(("<",2),("-",10),(">",2))
for((s,n)<-pairs)print(s*n)