创建Map
创建一个不可变的Map
scala> val ages=Map("leo"->30, "Jen"->25)
ages: scala.collection.immutable.Map[String,Int] = Map(leo -> 30, Jen -> 25)
scala> ages("leo")
res65: Int = 30scala> val ages = Map(("Leo", 30), ("Jen", 25), ("Jack", 23))创建一个可变的Map
scala> val ages=scala.collection.mutable.Map("leo"->30, "Jen"->25)
ages: scala.collection.mutable.Map[String,Int] = Map(Jen -> 25, leo -> 30)
scala> ages("leo") = 31scala> ages("leo")
res67: Int = 31创建一个空的HashMap
scala> val ages=new scala.collection.mutable.HashMap[String, Int] ages: scala.collection.mutable.HashMap[String,Int] = Map()
修改Map的元素
访问Map元素
scala> val leoAge = ages.getOrElse("Leo", 0) // 如果没有Leo,返回0leoAge: Int = 0增加多个元素
scala> ages += ("Mike" -> 35, "Tom" -> 40)
res68: ages.type = Map(Jen -> 25, Mike -> 35, leo -> 30, Tom -> 40)移除元素
scala> ages -= "Mike"res69: ages.type = Map(Jen -> 25, leo -> 30, Tom -> 40)
更新不可变元素
scala> val ages2 = ages + ("Mike" -> 36, "Tom" -> 40)
ages2: scala.collection.mutable.Map[String,Int] = Map(Jen -> 25, Mike -> 36, leo -> 30, Tom -> 40)移除不可变map的元素
scala> val ages3 = ages - "Tom"ages3: scala.collection.mutable.Map[String,Int] = Map(Jen -> 25, leo -> 30)
遍历Map
遍历map的entrySet
scala> for ((key, value) <- ages) println(key + " " + value)Jen 25leo 30Tom 40
遍历map的key
scala> for (key <- ages.keySet) println(key)JenleoTom
遍历map的value
scala> for (value <- ages.values) println(value)253040
生成新map,反转key和value
scala> for ((key, value) <- ages) yield (value, key) res73: scala.collection.mutable.Map[Int,String] = Map(40 -> Tom, 25 -> Jen, 30 -> leo)
SortedMap和LinkedHashMap
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可以记住插入的顺序
scala> val ages = new scala.collection.mutable.LinkedHashMap[String, Int]
ages: scala.collection.mutable.LinkedHashMap[String,Int] = Map()
scala> ages("leo") = 30scala> ages("alice") = 15scala> ages("jen") = 25scala> ages
res78: scala.collection.mutable.LinkedHashMap[String,Int] = Map(leo -> 30, alice -> 15, jen -> 25)Tuple
scala> val t=("leo", 30)
t: (String, Int) = (leo,30)
scala> t._1
res79: String = leo
scala> t._2
res80: Int = 30zip操作
scala> val names = Array("leo", "jack", "mike")
names: Array[String] = Array(leo, jack, mike)
scala> val ages = Array(30, 23, 34)
ages: Array[Int] = Array(30, 23, 34)
scala> val nameAges = names.zip(ages)
nameAges: Array[(String, Int)] = Array((leo,30), (jack,23), (mike,34))
scala> for ((name, age) <- nameAges) println(name + ": " + age)
leo: 30jack: 23mike: 34
编程那点事
