scala是一门函数式编程语言,函数被做为一等公民,能够做为参数进行传递。html
让咱们看一下计算fibonacci函数的scala代码java
def fino(n: Int): Int = { if(n == 1 || n == 0) 1 else fino(n-1) + fino(n-2) } fino(3)
groupBy在scala.collection.Traversable中定义编程
def groupBy[K](f: (A) ⇒ K): immutable.Map[K, Traversable[A]]
将List中的tuple按第一个元素进行归类。api
scala> val a = List(("h", "s"), ("h", "s"), ("l", "aa"), ("s", "mi")) a: List[(String, String)] = List((h,s), (h,s), (l,aa), (s,mi)) scala> a.groupBy(_._1) res0: scala.collection.immutable.Map[String,List[(String, String)]] = Map(h -> List((h,s), (h,s)), s -> List((s,mi)), l -> List((l,aa)))
map对collection中的每一个元素apply function f,返回一个新的collection。app
def map[B](f: (A) ⇒ B): Traversable[B]
对两个Map按key值作聚合,返回一个新的Map:k-> (a.value, b.value.size)。编程语言
val a = Map("h" -> 1, "j" -> 2) val b = Map("h" -> Set(2, 3), "j" -> Set(4, 5, 6)) val c = a.map{case(k, v) => k -> (v, b.getOrElse(k, Set.empty).size)}
对两个map作链接操做,好比:函数式编程
val a = Map("Lucy" -> 101, "Lilei" -> 102) val b = Map(101 -> "female", 102 -> "male") val c = a.map{ case(k,v) => k-> (v, b.getOrElse(v, "EMPTY"))}
将java的HashMap转成scala的Map函数
val a = new java.util.HashMap[String, Map[String, Int]]() a.put("he", Map("tag" -> 102)) a.put("fei", Map("tag" -> 103)) import scala.collection.JavaConverters._ a.asScala.toMap[String, Map[String, Int]]