Scala for the impatient: ch4
映射是key-value(對偶)的集合。 對偶是元組(tuple)最簡單的型態
- (1,3.14,"Fred") //元組由圓括號構成, Tuple3[Int,Double,java.lang.String]
-
val t= (1,3.14,"Fred")
t._2
//訪問第二個元組值
-
元組的各組元從1開始
-
val (first, second, third) =t //獲取元組值
- val (first, _ , third) =t //只取1,3元組值
-
"New York".partition(_isUpper)
//輸出對偶(符合條件,不符條件),元組可以用於需要返回不只一個值的情況
val scores = Map("Alice"->10,"Bob"->3) //Map[String,Int]其值無法變
-
val scores = Map(("Alice",60),("Bob",30)) //效果同上
- val newScores= scores+ ("Bob"->30,"Fred"->7) //新增另外一個映射
- var scores =... //改成var也可更新
-
val scores= scala.collection.mutable.Map("Alice"->10,"Bob"->3) //Map[String,Int]其值變
- scores("Fred")=5 //新增映射值
- scores+=("andy"->15,"aaaa"->6)
- scores-=("andy) //移除某鍵(不會有重複的鍵)
val scores= new scala.collection.mutable.HashMap[String,Int]
val bobScore=scores("Bob") //查找某個鍵對應的值
確認有無此鍵 scores.contains("Bob")
- scores.getOrElse("Bob",0) //若包含Bob則返回對應值,否則0
for((k,v) <-
-
for ((k,v) <-
- map(v) //若為Int仍為原始形態
scores.keySet //抓出key的集合
scores.values //抓出value的集合
操作映射時,默認情況下scala是按照哈希表
-
若要得到一個不可變的樹形映射(TreeMap)可用
- scala.collections.immutable.SortedMap
-
若要按插入順序訪問所有的鍵
- scala.collection.mutable.LinkedHashMap()
JAVA互動
- import scala.collection.JavaConversions.mapAsScala.Map
- val scores: scala.collection.mutable.Map[String,Int]= new java.util.TreeMap[String,Int]
拉鍊操作
- val symbols= Array("<","-",">"); val counts =Array(2,10,3); val pairs= symbols.zip(counts);for ((s,n) <- pairs) print(s*n) //可讓對偶同時被操作
.zip( ).toMap //如果分別有 , 兩個集合,就可以用.toMap轉成映射