Scala
十有八九
这个作者很懒,什么都没留下…
展开
-
Scala的模式匹配
匹配字符串object Demo1 extends App{ private val arr = Array("Hello","ABC","word") // 随机下标 数组的长度 private val name = arr(Random.nextInt(arr.length)) // 相当于switch name match { case "Hell...原创 2019-07-09 21:39:37 · 108 阅读 · 0 评论 -
Scala中下划线(_)的用法
作为通配符,类似Java中的*。如 import scala.math._:_* 作为一个整体,告诉编译器你希望将某个参数当作参数序列处理!例如val s = sum ( 1 to 5 : _* ) 就是将 1 to 5 当作参数序列处理。指代一个集合中的每个元素。例如我们要在一个Array a中筛出偶数,并乘以2,可以用以下办法: a.filter(_%2==0).map(2...原创 2019-07-09 16:38:24 · 950 阅读 · 0 评论 -
伴生类伴生对象和apply的使用
// 定义类 对象的半生类class bansheng { val name = "哈哈哈" val age = 123 // 正常私有的方法 private val gender = "北京" // 私有的方法,只能这个方法使用 private[this] val per = "是的呢"}// 定义对象 类的半生对象object bansheng{ d...原创 2019-07-09 20:09:45 · 655 阅读 · 0 评论 -
override和super的用法——超级易懂
// 父类方法class Person2 {// 私有的变量 private val name = "leo" val age = 50 // 把本类的name变成一个方法,方法名随意写 def getName=this.name}// 子类方法class student2 extends Person2{ private val score = "A" // ...原创 2019-07-09 20:41:00 · 1451 阅读 · 1 评论 -
trait定义抽象field
Scala中的trait也能定义抽象field, 而trait中的具体方法也能基于抽象field编写;继承trait的类,则必须覆盖抽象field,提供具体的值;举例说明:trait SayHelloTrait { // 抽象的属性 val msg:String def sayHello(name: String) = println(msg + ", " + name)}...原创 2019-07-10 21:06:37 · 132 阅读 · 0 评论 -
trait调用链
Scala中支持让类继承多个trait后,可依次调用多个trait中的同一个方法,只要让多个trait中的同一个方法,在最后都依次执行 super 关键字即可;类中调用多个trait中都有的这个方法时,首先会从最右边的trait的方法开始执行,然后依次往左执行,形成一个调用链条;这种特性非常强大,其实就是设计模式中责任链模式的一种具体实现;案例说明:trait HandlerTrait...原创 2019-07-10 21:11:21 · 304 阅读 · 0 评论 -
trait 继承 class
在Scala中trait 也可以继承 class,此时这个 class 就会成为所有继承该 trait 的子类的超级父类。Class ATrait B extends AClass C extends BTrait D extends B举例说明:class MyUtil { def printMsg(msg: String) = println(msg)}trait Lo...原创 2019-07-10 21:19:02 · 497 阅读 · 0 评论 -
Scala匿名函数,递归函数,嵌套函数
作为值的函数 可以像任何其他数据类型一样被传递和操作的函数,每当你想要给算法传入具体动作时这个特性就会变得非常有用。object MyFunction { def main(args: Array[String]): Unit = { //定义一个数组 val arr: Array[Int] = Array(1, 2, 3, 4...原创 2019-07-10 21:38:57 · 282 阅读 · 0 评论 -
Scala隐式转换
案例一优雅的解决数据类型转换问题/定义一个隐式转换的方法 实现double-->int implicit def f1(d: Double): Int = { d.toInt } def main(args: Array[String]): Unit = { //转换成功 val a: Int = 4.5 val b: Int = 5.6 ...原创 2019-07-10 21:46:09 · 135 阅读 · 0 评论 -
简单的map和set集合的特性
map集合以及set集合object lianxi extends App{ // b=>是遍历map集合里的key,value // b._1是获取map集合的key,b._2是value val s = Map("book"->5,"open"->2).map(b=>b._1+1 ->b._2*2) println(s) // set集合是...原创 2019-07-09 07:54:55 · 107 阅读 · 0 评论 -
Scala数组反转
object er extends App{ val st = Array[String]("A","B","C") // 数组反转 val r = st.reverse r.foreach(i => { print(i) })}运算结果:注意:reverse 是反转的关键字...原创 2019-07-08 21:36:54 · 2700 阅读 · 0 评论 -
Scala中求List集合的交集,并集,差集
object liu { def main(args: Array[String]): Unit = { val a1=List(5,6,4,7) val a2=List(1,2,3,5) // 交集 val c1 = a1.intersect(a2) println(c1) // 并集 val c2 = a1:::a2 pr...原创 2019-07-08 21:27:26 · 4439 阅读 · 0 评论 -
样例类
在Scala中样例类是一种特殊的类,可用于模式匹配。定义形式:case class 类型,是多例的,后面要跟构造参数。 case class Student(name:String)case object 类型,是单例的。case class SubmitTask(id: String, name: String)case class HeartBeat(time: Long)case...原创 2019-07-09 21:45:16 · 1695 阅读 · 0 评论 -
Scala抽象方法
如果在父类中,有某些方法无法立即实现,而需要依赖不同的子类来覆盖,重写实现不同的方法。此时,可以将父类中的这些方法编写成只含有方法签名,不含方法体的形式,这种形式就叫做抽象方法;一个类中,如果含有一个抽象方法或抽象field,就必须使用abstract将类声明为抽象类,该类是不可以被实例化的;在子类中覆盖抽象类的抽象方法时,可以不加override关键字;举例说明:abstract c...原创 2019-07-09 21:16:03 · 1339 阅读 · 0 评论 -
判断是否是实例 is/as InstanceOf和getClass,classOf
isInstanceOf 和 asInstanceOf注意: p.isInstanceOf[XX] 判断 p 是否为 XX 对象的实例;p.asInstanceOf[XX] 把 p 转换成 XX 对象的实例注意: 如果没有用 isInstanceOf 先判断对象是否为指定类的实例,就直接用 asInstanceOf 转换,则可能会抛出异常;注意: 如果对象是 null,则 isInstan...原创 2019-07-09 21:08:15 · 402 阅读 · 0 评论 -
Scala构造器的使用
// 主构造器class Person(gender:String) {// 辅构造器 调用主构造器 def this()=this("哈哈") var name = ""// 重写tostring方法 override def toString: String = s"$name gender = $gender"}object tes{ def ...原创 2019-07-09 19:34:28 · 197 阅读 · 0 评论 -
Scala循环的break和continue
object a { def main(args: Array[String]): Unit = { // 定义一个数组 val arr = Array(1,4,2,7,9,10) val bs = new Breaks // 在循环外面是break bs.breakable( arr.foreach(i=>{ if (i =...原创 2019-07-09 14:02:15 · 416 阅读 · 0 评论 -
Scala元组
概念元祖是scala中一个非常有用的容器对象,用于存放不同类型的数据元素,当然他是不可变的关键字:不同类型 长度不可变元组的创建val tuple=(1,“abc”,false)val tuple1 = new Tuple2(1,2)元组的操作元组是通过下划线+下标索引进行访问的,并且是从1开始val tuple = (1, 2, 3, 4)val a = tuple._1 ...原创 2019-07-07 20:57:24 · 267 阅读 · 0 评论 -
Scala入门必知必会
1、 为什么要学习scala?在线计算 spark scala ,a.spark 底层是scala ,我们需要看源码b.scala 基于java ,开发效率高,运行速度快2、 scala的介绍scala 是一门多范式的编程语言,即面向对象也是函数式编程面向对象:万物皆对象 封装 实例对象 类 继承函数式编程: 面向过程 函数当成编程3、 scal...原创 2019-07-05 19:43:36 · 268 阅读 · 0 评论 -
Scala从控制台获取值,截取字符串,随机数生成
1、scala 语言如何接受键盘的输入? println("请输入姓名:") val int = Console.readLine() println("您的姓名是:"+int) 2、字符串中获取收尾字母//获取首字符??"Hello"(0)"Hello".take(1)//获取尾字符??"Hello".reverse(0)"Hello".takeRight(1)3、随...原创 2019-07-05 19:56:41 · 658 阅读 · 0 评论 -
一眼看懂map和flatmap的区别
map的作用很容易理解就是对rdd之中的元素进行逐一进行函数操作映射为另外一个rdd。flatMap的操作是将函数应用于rdd之中的每一个元素,将返回的迭代器的所有内容构成新的rdd。通常用来切分单词。Spark 中 map函数会对每一条输入进行指定的操作,然后为每一条输入返回一个对象;而flatMap函数则是两个操作的集合——正是“先映射后扁平化”:操作1:同map函数一样:对每一条输入进...原创 2019-07-11 21:30:23 · 64598 阅读 · 5 评论