Spark(day02) -- Scala

1.WordCount

object ScalaWC {
  //定义一个list
   val lines =List("hello tom hello bob hello jerry","hello tom hello bob hello jj")
  //压平并切分
  val word =lines.flatMap(_.split(" "))
  //单词作为key 1作为value
  val wordAndOne=word.map((_,1))
//相同单词分一组
  val grouped=wordAndOne.groupBy(_._1)
  //求和
  val result =grouped.map(t=>(t._1,t._2.size))
  //val result =grouped.mapValues(_.foldLeft(0)(_+_._2))
//排序
  val final1=result.toList.sortBy(_._2).reverse

}


2.Match

object MatchDemo1 {
  def main(args: Array[String]): Unit = {
    val lst=List(0)
    lst match {
        //Nil代表空的list
      case 0::Nil =>println("只有0一个元素")
      case x::y::Nil => println(s"x:$x y:$y")
      case 0::tail =>println("0还有其他")
      case _ => println("没有匹配上")
    }
  }
}
//元组的匹配
object MatchDemo2 {
  def main(args: Array[String]): Unit = {
    val t=(10,9,5)
    t match {
      case (1,x,y) => println(s"1,$x,$y")
      case (_,9,5) =>println(t)
      case _  => println("qita")
    }
  }
}


3.currying

//柯理化
object KLH {
  def main(args: Array[String]): Unit = {
    def klh(x:Int)(y:Int) =x*y
    val res=klh(3)(_)
   println(res(4))
  }
}

4.Implicit

object implicitContext{
  implicit val food="banna"
 implicit val food1 = 10
  implicit val food2 = 3.14
}
object ImplicitDemo {

  def eat()(implicit food:Double):Unit={
    println(s"$food  delicious!!!!!!!!!!!!!!!!!!!!!!!!1")
  }
  def main(args: Array[String]): Unit = {
//    eat()
    import implicitContext._
    eat()
//    eat()("apple")

    val arr=Array(1,2,3,4,5,6,7,8)
    def mutil(x:Int) =x*x
    val res=arr.map(mutil)
    println(res.toBuffer)


  }
}
//超人变身
//用隐式转化加强现有类型
//类型中没有方法的时候会尝试进行隐式转换
class SuperMan(val name:String){
  def emitLaster=println("emitLaser!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")

}
class Man(val name:String)

object ImplicitDemo1 {
implicit def man2superMan(man:Man):SuperMan=new SuperMan(man.name)

  def main(args: Array[String]): Unit = {
    val tom=new Man("Tom")
    tom.emitLaster
  }
}
//隐式参数的隐式转换
class SignPen{
 def write(context:String)=println(context)
}
object ImplicitContext{
  implicit val signPen=new SignPen
}
object ImplicitDemo2 {
def signForExam(name:String)(implicit signPen: SignPen):Unit={
  signPen.write(name+" arrive in time")


}
  def main(args: Array[String]): Unit = {

   import ImplicitContext._

    signForExam("Bob")
    signForExam("jack")
  }
}
//特殊售票窗口
//类型不对会尝试进行隐式转化
class SpecialPerson(val name:String)
class Student(val name:String)
class Older(val name:String)

class Teacher(val name:String)
object ImplicitDemo3 {
implicit def object2SpecialPerson(obj:Object):SpecialPerson={
  if(obj.getClass==classOf[Student]){
    val stu=obj.asInstanceOf[Student]
    new SpecialPerson(stu.name)
  }else if(obj.getClass==classOf[Older]){
    val older=obj.asInstanceOf[Older]
    new SpecialPerson(older.name)
  }else{
    Nil
  }


}
  var ticketNumber=0
  def buySpecialTicket(p:SpecialPerson)={
    ticketNumber +=1
    "T+" +ticketNumber

  }
  def main(args: Array[String]): Unit = {

    val pandi=new Student("pandi")
     println(buySpecialTicket(pandi))
    val chang=new Older("chang")
      println(buySpecialTicket(chang))
    val liping=new Student("liping")
    println(buySpecialTicket(liping))
    val shi=new Teacher("shi")
      println(buySpecialTicket(shi))
  }
}

5.Actor

import scala.actors.Actor

//给actor发送消息
class HelloActor extends Actor {
  override def act(): Unit ={
    while (true){
      receive{
        case name:String =>println("hello , "+name)
        case money:Int=>println("how much ? "+money)
      }
    }
  }
}
class HelloActor1 extends Actor {
  override def act(): Unit ={
    while (true){
      receive{
        case name:String =>println("hello xxxxx, "+name)
        case money:Int=>println("how much xxxxxx? "+money)
      }
    }
  }
}
object HelloActor {
  def main(args: Array[String]): Unit = {
    val helloActor1=new HelloActor1
    val helloActor=new HelloActor
    helloActor1.start()
    helloActor.start()
    helloActor1 ! "tom"
    helloActor ! "tom"
  }
}
import scala.actors.Actor

//给actor发送case class 消息
case class Rigister(username:String,passwd:String)
case class Login(username:String,passwd:String)
class UserMangerActor extends Actor{
  override def act: Unit ={
    while (true){
      receive{
        case Login(username,passwd)=>println("login: "+username+":"+passwd)
        case Rigister(username,passwd)=>println("rigister: "+username+":"+passwd)
      }
    }
  }
}
object HelloActor2 {
  def main(args: Array[String]): Unit = {
    val userActor=new UserMangerActor
    userActor.start()
    userActor ! Rigister("tom","123")
    userActor ! Login("jerry","456")
  }
}
import scala.actors.Actor

case class Message(context:String,sender:Actor)
class TomActor extends Actor{
  override def act: Unit ={
    while (true) {
      receive{
        case Message(context,sender)=>println("Tom received: "+context)
            sender ! "sorry i am busy now "

      }
    }
  }
}
class JerryActor (val tomActor: TomActor)extends Actor{
  override def act: Unit ={
    tomActor ! Message("hello tom ,i am jerry are you free now ?",this)

    while (true){
      receive{
        case response:String=>println("jerry received......"+response)
      }
    }
  }
}
object HelloActor3 {
  def main(args: Array[String]): Unit = {
  val tomActor=new TomActor
    val jerryActor=new JerryActor(tomActor)
    tomActor.start()
    jerryActor.start()
  }
}






 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值