在代码中学习scala

scala是一门函数式编程语言,函数被作为一等公民,可以作为参数进行传递。

让我们看一下计算fibonacci函数的scala代码

def fino(n: Int): Int = {
    if(n == 1 || n == 0) 1 else fino(n-1) + fino(n-2)
}

fino(3)

collection的API

groupBy

groupBy在scala.collection.Traversable中定义

def groupBy[K](f: (A) ⇒ K): immutable.Map[K, Traversable[A]]

将List中的tuple按第一个元素进行归类。

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

map对collection中的每个元素apply function f,返回一个新的collection。

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互操作

将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]]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值