scala 基礎六 scala Map和元組的操作
阿新 • • 發佈:2017-06-30
mutable 新的 light tables 都是 數組 con port 單獨
1.Map的介紹
Map(映射)是一種可叠代的鍵值對(key/value)結構。所有的值都可以通過鍵來獲取。Map 中的鍵都是唯一的。Map 也叫哈希表(Hash tables)。Map 有兩種類型,可變與不變,區別在於可變對象可以修改它,而不可變對象不可以。默認情況下 Scala 使用不可變 Map。如果你需要使用可變集合,你需要顯式的引入 import scala.collection.mutable.Map 類
2.Map 的分類和定義
//不可變Map
var m1=Map("james"->20,"luce"->22);
//可變Map
var m2=scala.collection.mutable.Map("james"->20,"luce"->22);
//指定泛型,如果不指定scala會根據類型自動判斷
var m3=scala.collection.mutable.Map[String,Int]();
3.不可變Map的使用
//根據Key獲取value 如果key不存在的話會拋出異常 m1("james"); //等同於m1("james") 如果key不存在的話會 返回None m1.get("james"); //給key 設置一個默認值,如果key 不存在就設置為20 不至於拋出異常 m1.getOrElse("tom", 20) //獲取所有的key m1.keys //獲取所有的value m1.values
4.可變Map的操作
//可變Map var m2=scala.collection.mutable.Map("james"->20,"luce"->22); //產生一個新的對象,不會動態增加 m2+("lili"->18) //不產生新對象直接在m2 中增加對象 m2+=("lili"->18);
5.遍歷集合
遍歷所有的key 和value 格式for((k,v)<-x){....}
//可變Map var m2=scala.collection.mutable.Map("james"->20,"luce"->22); //遍歷Key 和Value for((k,v)<-m2){println("key is"+k+" value is"+v)} result: key isjames value is20 key isluce value is22 key islili value is18
單獨的遍歷Key 或者value for((k,_)<-x){} for((_,v)<-x){}
//只遍歷所有的key value 省略 for((k,_)<-m2) println("key is "+k) //只遍歷所有的value key省略 for((_,v)<-m2) println("value is"+v) result: key is james key is luce key is lili value is20 value is22 value is18
6.元組的介紹和使用
與列表一樣,元組也是不可變的,但與列表不同的是元組可以包含不同類型的元素。
val t = (1, 3.14, "Fred")
以上實例在元組中定義了三個元素,對應的類型分別為[Int, Double, java.lang.String]。
元組 通過 ._ 取值, 下標從1 開始,比如 t._1 將獲取1 這點和數組不同,數組的下標是從0開始的
val t = (4,3,2,1) val sum = t._1 + t._2 + t._3 + t._4 println( "元素之和為: " + sum )
result:
$ scalac Test.scala
$ scala Test
元素之和為: 10
元組的叠代
你可以使用 Tuple.productIterator() 方法來叠代輸出元組的所有元素:
//通過 productIterator 叠代元組 for(x<-t.productIterator) println(x)
scala 基礎六 scala Map和元組的操作