编程那点事编程那点事

专注编程入门及提高
探究程序员职业规划之道!

Scala基础语法:Map与Tuple

创建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 = 30

zip操作

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
未经允许不得转载: Scala基础语法:Map与Tuple