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) // <<--->>