Map(映射)是一種可迭代的鍵值對集合。在scala中使用映射很是簡單。java
//inmutable Map(不可變映射,值不可變) // 具備初始值 // 在scala中->操做符是用來建立鍵值對元組的。 val inmutableMap = Map(("yoleen" -> 20), ("hq", 26)) // 不具備初始值,不建議對不可變Map這樣構建。不可變映射添加數據都返回一個新的映射。 val stringToInt = new scala.collection.immutable.HashMap[String, Int] //mutable Map(可變映射,增長、刪除、更新元素返回自身) val mutableMap: mutable.Map[String, Int] = scala.collection.mutable.Map(("yoleen" -> 20), ("hq", 26)) //不具備初始值 val stringToInt = new scala.collection.mutable.HashMap[String, Int] //有初始值的能夠不用new
val mutableMap: mutable.Map[String, Int] = scala.collection.mutable.Map(("yoleen" -> 20), ("hq", 26)) val v: Option[Int] = mutableMap.get("yoleen") //若是key存在返回的是some對象,對結果進行了封裝。不存在返回的是None val v1: Int = mutableMap("yoleen")// 使用apply方法獲取值,不進行option封裝。 val v2: Int = mutableMap.getOrElse("yoleen", 10)//若是key不存在就返回默認值 val v3: Int = mutableMap.getOrElseUpdate("yoleen1",op(5,6))//若是key不存在返回默認值的同時還添加進映射中去。
val mutableMap: mutable.Map[String, Int] = scala.collection.mutable.HashMap[String,Int] mutableMap+=("yoleen"->10) mutableMap+=("yoletpig"->10,"alex"->20) //添加多個鍵值對 mutableMap++=mutable.Map(("tony" -> 20), ("jskon", 26)) //添加另外一個映射中全部鍵值對。 mutableMap.put("kudu",6)//鍵存在則更新值 mutableMap("yoleen") = 20//更新值 mutableMap.transform((s, i) => i * 2)//對每一個鍵對應的值進行*2操做
mutableMap-="yoleen" mutableMap-=("yoletpig","jskon") //移除多個鍵值對 val option: Option[Int] = mutableMap.remove("kudu") //移除鍵值對返回option對象 mutableMap.retain((s,i)=>s.startsWith("y") && i>=10) //只保留鍵已"y"開頭而且值大於等於10的鍵值對 mutableMap.clear()//清除全部鍵值對
for (elem <- mutableMap) { elem // tuple類型(String,Int) } for ((k,v) <- mutableMap) { //k,v 鍵跟值 } for (elem <- mutableMap.keySet) { //elem 就是key } for (elem <- mutableMap.values) { //elem 就是value }
除了經常使用的HashMap以外,還有SortMap,LinkedHashMap,TreeMap等等。app
import scala.collection.JavaConversions.mapAsScalaMap
元組的值是經過將單個的值包含在()中構成。例如:scala
(1,3.14,"hello") //類型不限 val t = (1,3.14,"hello") //咱們能夠經過._1 ._2來訪問元組中的元素 val a = t._1 // 1 val b = t._2 // 3.14 //注意,元組下標是從1開始。 //咱們能夠使用模式匹配獲取元組中的值。 val (first,_,third) = t // first=1,third="hello"
val sy = Array("<","-",">") val cnt = Array(2,3,2) val pairs = sy.zip(cnt) //Array(("<",2),("-",3),(">",2)) for((s,n)<-pairs) print(s*n) // <<--->>