
Scala语言基础
Scala基础实践应用。
郝少
爱出者爱返,福往者福来。
展开
-
Scala中forall、exists、foreach、map的区别
1、forall对集合中的元素进行逐个判断,全部为true则返回true,反之返回false。val list = ListBuffer("scala", "java")println("=======================forall==============================")val b1: Boolean = list.forall(_.contains("s"))println(b1)val b2: Boolean = list.forall(_.con原创 2021-11-17 11:32:43 · 1671 阅读 · 0 评论 -
Scala中s函数的应用
package com.cn.testobject TestSFunction { def main(args: Array[String]): Unit = { var name:String="Tom" println(s"hello $name")//hello Tom println(s"2+3=${2+3}")//2+3=5 }}原创 2020-08-12 14:00:55 · 642 阅读 · 0 评论 -
Scala正则匹配
一、说明1、Scala 的正则表达式继承了 Java 的语法规则;2、Scala 通过 scala.util.matching 包中的Regex类来支持正则表达式;二、demo演示1、代码package com.hn.testimport scala.util.matching.Regexobject TestRegex { def main(args: Array[String]): Unit = { //val p1: Regex = "scala".r /..原创 2020-07-22 09:09:13 · 1113 阅读 · 0 评论 -
sacla_快捷键返回类型_Map的getOrElse()的使用
一、IDEA环境下scala的的快捷返回键1、语句末尾 .var->enter2、等号前面 alt+enter->enter二、getOrElse()的使用object Scala01 { def main(args: Array[String]): Unit = { val map: Map[String, String] = Map("aa"->"AA","bb"->"BB","cc"->"CC") val map01: Option原创 2020-07-15 17:58:05 · 853 阅读 · 0 评论 -
怎么运行scala语言打成jar包的程序
[root@slaves1 bin]# ./spark-submit --class com.cn.util.KafkaEventProducer /home/test/telecomeAnalysis-1.0.0.jar 20/06/24 17:29:29 INFO producer.ProducerConfig: ProducerConfig values: acks = 1 batch.size = 16384 bootstrap.servers = [192.168.230.21:666.原创 2020-06-24 17:35:57 · 1040 阅读 · 1 评论 -
scala_容器操作之exists(contains和equals)注意细节
1、代码package com.comleader.serverobject Test { def main(args: Array[String]): Unit = { val arr=List("a","b","c") val bool01 = arr.exists(s=>s.equals("")) println(bool01) val b...原创 2020-03-04 14:47:29 · 925 阅读 · 0 评论 -
Scala读取文本数据
1、数据源2、代码package com.cn.utilimport scala.io.Sourceobject scalaUtils { //读取txt文本,并且返回所有行的迭代器; def readTxtLines(s_filePath: String):Iterator[scala.Predef.String] ={ val filePath=s_fil...原创 2020-03-04 14:38:31 · 1618 阅读 · 0 评论 -
Spark(scala)动态读取properties配置文件
目录1、在项目中先新建一个properties配置文件2、编写动态加载属性的util类3、疑问点1、在项目中先新建一个properties配置文件2、编写动态加载属性的util类import java.io.FileInputStreamimport java.util.Propertiesobject LoadParameter { //动态获取prop...原创 2020-02-14 12:18:25 · 2380 阅读 · 0 评论 -
Scala_容器的各种操作
针对每种类型的容器,Scala都提供了一批相同的方法,只需几个简单的函数调用就可以代替复杂的循环或递归。使用类库提供的标准操作,通常比自己写的循环更加高效;一、遍历操作:1、Scala容器的标准遍历方法为foreach方法,该方法的原型为:def foreach[U](f: Elem=> U) : Unit2、实例:object CollOpt extends ...原创 2020-01-06 17:20:01 · 1368 阅读 · 1 评论 -
Scala_偏应用函数
1、定义:偏应用函数(Partial Applied Function)也叫部分应用函数,只保留了函数部分参数;2、举例:object PFunction extends App { def sum(x:Int,y:Int,z:Int)=x+y+z val p1=sum(1,_:Int,_:Int) //x 已知 println(p1(2,3)) //6 val p2...原创 2020-01-04 16:58:24 · 254 阅读 · 0 评论 -
Scala_闭包
1、概念:以前函数的执行只依赖传入函数的参数值,与调用函数的上下文无关;当函数的执行依赖于声明在函数外部的一个或者多个变量时,则称这个函数为闭包;2、举例object BiBao extends App { var flag=10 val func=(a:Int)=>a+flag println(func(4)) //14 flag=20 println...原创 2020-01-04 16:18:45 · 126 阅读 · 0 评论 -
Scala_高阶函数
1、定义:当一个函数包含其他函数作为其参数或者返回结果为一个函数时,该函数被称为高阶函数;2、不采用高阶函数,使用递归实现下面功能:object GaojieFunction extends App { //2的a次方 def powerOfTwo(a:Int):Int={ return if (a==0) 1 else 2*powerOfTwo(a-1) }...原创 2020-01-04 15:59:41 · 250 阅读 · 0 评论 -
Scala_初识函数
1、函数样式val counter=(value:Int)=>value+1//val counter=(value:Int)=>{value+1}(1)如果只用一条语句可以省略{};(2)(value:Int)=>value+1 称为函数的字面量或者匿名函数;2、"_"简化当函数的每个参数在函数字面量内仅出现一次,可以省略‘=>’,并用下划线作为参...原创 2020-01-03 17:20:25 · 152 阅读 · 0 评论 -
Scala_特质和抽象类的区别
1、都有抽象方法和已经实现的方法,子类重载其非抽象成员都必须加上override关键字,子类重载其抽象成员时override关键字可选;2、优先使用特质,一个类扩展多个特质是很方便的,但却只能扩展一个抽象类;3、如果需要构造方法参数,使用抽象类,因为抽象类可以定义带参数的构造方法,而特质不行;...原创 2020-01-02 15:41:17 · 958 阅读 · 0 评论 -
Scala_特质
一、Scala特质规则:1、Scala特质是代码重用的基本单元,可以同时拥有抽象方法和具体方法;2、Scala中一个类只能继承自一个超类,却可以混入多个特质(多继承);3、特质像抽象类一样也可以包含非抽象程序员,但是不需要abstract关键字;4、特质可以使用extents继承其他的特质,并且重载父特质的抽象方法,而且还可以继承类;5、特质的定义体就相当于主构造器,与类不同的...原创 2020-01-02 15:23:35 · 948 阅读 · 0 评论 -
Scala_抽象类
一、概念1、如果一个类包含没有实现的成员,则必须使用abstract关键词进行修饰,定义为抽象类。2、抽象类中的抽象字段必须要有声明类型。3、与java不同的是,Scala里的抽象方法不需要加abstract修饰符。4、抽象类不能进行实例化,只能作为父类被其他子类继承。二、实例package com.scala.test.myclassabstract class C...原创 2019-12-31 17:04:52 · 316 阅读 · 0 评论 -
Scala_继承
一、概念Scala类的继承,像java一样只支持单一继承,而不支持多重继承。1、重载父类的抽象成员(字段和方法)时,override关键字是可选的;而重载父类的非抽象成员时,override关键字是必选的;2、只能重载val类型的字段,而不能重载var类型的字段。因为var类型本身就是可变的,所以,可以直接修改它的值,无需重载。3、对于父类主构造器中用var和val修饰的参数,由于...原创 2019-12-31 16:52:19 · 337 阅读 · 0 评论 -
Scala_应用程序对象
Scala程序必须从一个对象的main方法开始,可以通过扩展App特质,省略main方法是实现:package com.scala.test.myclassobject MyMain extends App { println("Hello Scala")}Hello Scala...原创 2019-12-31 11:10:36 · 172 阅读 · 0 评论 -
Scala_Object关键字
1、为什么要使用Object通俗解释:在Scala中没有静态方法和静态属性,故使用Object修饰的类名(对象)里面的方法和属性都相当于static修饰的。专业解释:Scala类中没有java那样的静态成员。Scala采用单例对象来实现与java静态成员同样的功能。单例对象的定义与类定义类似,只是用object关键字替换了class关键字。package com.scala.test...原创 2019-12-31 11:02:33 · 469 阅读 · 0 评论 -
Scala_构造器
Scala的构造器分为主构造器和从构造器:1、主构造器(1)不需要定义与类名相同的方法作为构造器,这点与java不同;(2)主构造器的参数直接写在类名的后面;(3)在Scala的类里面除了属性和方法之外的代码都是主构造器的内容;package com.scala.test.myclassclass Person(name:String,age:Int) { print...原创 2019-12-31 09:56:13 · 318 阅读 · 0 评论 -
Scala_类
package com.scala.test.myclass//默认public修饰类、属性、方法class Person { //属性使用var修饰,默认只有getter方法 //val name="xiaoming" // val age =20 //属性使用var修饰,默认加上setter、getter方法 var name="xiaoming" var ...原创 2019-12-31 09:33:05 · 103 阅读 · 0 评论 -
Scala_函数作为方法参数
package com.scala.test.functionobject Function { def main(args: Array[String]): Unit = { val f1=(a:Int,b:Int)=>a+b val f2=(a:Int,b:Int)=>a*b def method(f:(Int,Int)=>Int)={ ...原创 2019-12-26 15:47:03 · 1161 阅读 · 0 评论 -
Scala_List和ListBuffer
1、说明:scala的集合中有两种List:scala.collection.immutable.List //长度内容都不可变scala.collection.mutable.ListBuffer //长度内容都可变,必须导入包注意:immutable下没有ListBuffer;mutable下没有List;2、List val list = List(1, 2...原创 2019-12-26 15:33:59 · 1647 阅读 · 0 评论 -
Scala_Map使用
1、Map、HashMap都分为immutable(不可变)和mutable(可变)两种类型。2、创建一个不可变Map //创建一个不可变Map val map = Map("name"->"LiSi","Sex"->"man") println(map.get("name")) //Some(LiSi) println(map("name"))...原创 2019-12-26 15:07:27 · 492 阅读 · 0 评论 -
Scala_匹配模式
一、基本概念及举例1、scala中的match case(模式匹配),类似于java中的switch case2、scala中的模式匹配,可以匹配变量的类型、集合的元素、有无值等各种情况;java中的switch case 却只能匹配数值;3、语法:变量 match{case 值 => 代码 ... case _ =>代码}, case _ 相当于java中switc...原创 2019-12-26 10:05:18 · 302 阅读 · 0 评论 -
scala_数组
1、初始化定长数组 //通过显示指定类型实例化一个数组 val array01 = new Array[Int](3) array01(0)=6 array01(1)=7 array01(2)=8 //通过隐式推断来实例化一个数组 val array02 = Array(1,2,3)2、初始化变长数组对于长度动态变化的数组,jav...原创 2019-12-25 15:35:37 · 194 阅读 · 0 评论 -
scala_if条件表达式、while循环、for循环表达式
1、if条件表达式package com.scala.test.Testobject IfTest02 { def main(args: Array[String]): Unit = { val a:Int=60 //这种情况和java语言一样 if(a>60){ println("大于60") }else{ printl...原创 2019-12-25 12:00:03 · 409 阅读 · 0 评论 -
scala语言对循环的控制
1、概念: java对于循环的控制,提供了break和continue两个关键字;但是scala语言中并没有提供这两个关键字,而是使用Breaks类的两个方法(breakable和break)对循环结构进行控制。2、实列:package com.scala.test.Testimport scala.util.control.Breaks._object Break...原创 2019-12-14 16:02:41 · 243 阅读 · 0 评论 -
Scala中For循环yield关键字的使用
1、概念: for循环中的yield会将for循环过程中的值保存下来,保存到一个集合中,在循环结束的时候会将集合全部输出,如果被循环的是map,则输出的就是map。如果被循环的是list,则输出的就是list,以此类推。2、实例理解:scala> val r=for(a <- Array(1,2,3,4) if a % 2==0) | yield a...原创 2019-12-14 15:40:50 · 771 阅读 · 0 评论 -
Linux_Scala安装
1、建立文件夹并解压2、配置/etc/profile中的环境变量#scalaSCALA_HOME=/opt/software/scala/scala-2.12.4PATH=$SCALA_HOME/bin:$PATHsource /etc/profile3、赋权限chmod 777 /opt/software/scala/scala-2.12.4/bin/*4...原创 2019-07-22 15:25:26 · 154 阅读 · 0 评论