1、mapes6
一、建立map函數
//建立一個不可變的Map
scala> val ages = Map("Leo" -> 30, "Jen" -> 25, "Jack" -> 23)
ages: scala.collection.immutable.Map[String,Int] = Map(Leo -> 30, Jen -> 25, Jack -> 23)
//建立一個可變的Map
scala> val ages = scala.collection.mutable.Map("Leo" -> 30, "Jen" -> 25, "Jack" -> 23)
ages: scala.collection.mutable.Map[String,Int] = Map(Jen -> 25, Jack -> 23, Leo -> 30)
scala> ages("Leo") = 31
scala> ages
res5: scala.collection.mutable.Map[String,Int] = Map(Jen -> 25, Jack -> 23, Leo -> 31)
//使用另一種方式定義Map元素
scala> val ages = Map(("Leo",30),("Jen",25),("Jack",23))
ages: scala.collection.immutable.Map[String,Int] = Map(Leo -> 30, Jen -> 25, Jack -> 23)
//建立一個空的HashMap
scala> val ages = new scala.collection.mutable.HashMap[String, Int]
ages: scala.collection.mutable.HashMap[String,Int] = Map()
二、訪問Map的元素es5
##獲取指定key對應的value,若是key不存在,會報錯
scala> val ages = Map(("Leo",30),("Jen",25),("Jack",23))
ages: scala.collection.immutable.Map[String,Int] = Map(Leo -> 30, Jen -> 25, Jack -> 23)
scala> val age = ages("Leo")
age: Int = 30
##使用contains判斷key是否存在
scala> val age = if (ages.contains("Leo")) ages("Leo") else 0
age: Int = 30
##getOrElse函數判斷key是否存在
scala> val age = ages.getOrElse("Leo",0)
age: Int = 30
三、修改Map的元素spa
##更新Map的元素
scala> val ages = scala.collection.mutable.Map("Leo" -> 30, "Jen" -> 25, "Jack" -> 23)
ages: scala.collection.mutable.Map[String,Int] = Map(Jen -> 25, Jack -> 23, Leo -> 30)
scala> ages("Leo") = 31
scala> ages("Leo")
res3: Int = 31
##增長多個元素
scala> ages += ("Mike" -> 35, "Tom" -> 40)
res4: ages.type = Map(Jen -> 25, Mike -> 35, Tom -> 40, Jack -> 23, Leo -> 31)
scala> ages
res5: scala.collection.mutable.Map[String,Int] = Map(Jen -> 25, Mike -> 35, Tom -> 40, Jack -> 23, Leo -> 31)
##移除元素
scala> ages -= "Mike"
res6: ages.type = Map(Jen -> 25, Tom -> 40, Jack -> 23, Leo -> 31)
scala> ages
res7: scala.collection.mutable.Map[String,Int] = Map(Jen -> 25, Tom -> 40, Jack -> 23, Leo -> 31)
##更新不可變的map
scala> val ages2 = ages + ("Mike" -> 36, "Tom" -> 40)
ages2: scala.collection.immutable.Map[String,Int] = Map(Mike -> 36, Tom -> 40, Leo -> 30, Jack -> 23, Jen -> 25)
scala> ages2
res0: scala.collection.immutable.Map[String,Int] = Map(Mike -> 36, Tom -> 40, Leo -> 30, Jack -> 23, Jen -> 25)
##移除不可變map的元素
scala> val ages3 = ages - "Tom"
ages3: scala.collection.immutable.Map[String,Int] = Map(Leo -> 30, Jen -> 25, Jack -> 23)
scala> ages3
res1: scala.collection.immutable.Map[String,Int] = Map(Leo -> 30, Jen -> 25, Jack -> 23)
四、遍歷mapscala
##遍歷map的entrySet scala> val ages = Map("Leo" -> 30, "Jen" -> 25, "Jack" -> 23) ages: scala.collection.immutable.Map[String,Int] = Map(Leo -> 30, Jen -> 25, Jack -> 23) scala> for ((key, value) <- ages) println(key + ":" + value) Leo:30 Jen:25 Jack:23 ##遍歷map的key scala> for (key <- ages.keySet) println(key) Leo Jen Jack ##遍歷map的value scala> for (value <- ages.values) println(value) 30 25 23 ##生成新map,反轉key和value scala> for ((key, value) <- ages) yield (value, key) res8: scala.collection.immutable.Map[Int,String] = Map(30 -> Leo, 25 -> Jen, 23 -> Jack)
五、SortedMap和LinkedHashMapcode
##SortedMap能夠自動對Map的key的排序
scala> val ages = scala.collection.immutable.SortedMap("Leo" -> 30,"Alice" -> 15, "Jen" -> 25)
ages: scala.collection.immutable.SortedMap[String,Int] = Map(Alice -> 15, Jen -> 25, Leo -> 30)
##LinkedHashMap能夠記住插入entry的順序
scala> val ages = new scala.collection.mutable.LinkedHashMap[String, Int]
ages: scala.collection.mutable.LinkedHashMap[String,Int] = Map()
scala> ages("Leo") = 30
scala> ages("Alice") = 25
scala> ages("Jen") = 26
scala> ages
res12: scala.collection.mutable.LinkedHashMap[String,Int] = Map(Leo -> 30, Alice -> 25, Jen -> 26)
2、Tupleblog
map的元素類型Tuple排序
一、定義、訪問Tupleip
##定義 scala> val t = ("leo", 30, "Jen") t: (String, Int, String) = (leo,30,Jen) ##訪問 scala> t._1 res15: String = leo scala> t._2 res16: Int = 30 scala> t._3 res17: String = Jen ##zip操做 scala> val names = Array("leo","jack","mike") names: Array[String] = Array(leo, jack, mike) scala> val ages = Array(30,25,27) ages: Array[Int] = Array(30, 25, 27) scala> val nameages = names.zip(ages) nameages: Array[(String, Int)] = Array((leo,30), (jack,25), (mike,27)) scala> for ((name, age) <- nameages) println(name + ": " + age) leo: 30 jack: 25 mike: 27