01scala语法

一、01scala基本语法

1.scala集合中常用的方法

1.map&&flatMap方法对比

1.demo:
    val wc = List("hadoop,hive , ,hbase,spark","hadoop, ,hive")
    //对List集合中的每个元素(ele代表集合中的某个元素)调用split(",")函数,split(",")函数会将元素中的字符串按照","号拆分
    wc.map(ele => ele.split(","))
    执行结果:List[Array[String]]:List((hadoop,hive , ,hbase,spark),(hadoop, ,hive))
    wc.flatMap(ele => ele.split(","))
    执行结果:List[String]:List(hadoop,hive , ,hbase,spark,hadoop, ,hive)
    map和flatMap的区别:根据执行结果可以看出flatMap会将List集合中每个元素的处理结果进行合并,而map不会将List集合中每个元素的处理结果进行合并
2.统计单词:
    val wc = List("hadoop,hive , ,hbase,spark","hadoop, ,hive")
    wc.flatMap(ele => ele.split(",").map(ele => ele.trim).filterNot(ele => ele.isEmpty)).groupBy(ele => ele).map(ele => {
    val key = ele._1
    val value = ele._2.size

    (key,value)
    })
    split(","):根据","将字符串进行切分,返回一个List[String]
    filterNot(ele => ele.isEmpty):保留集合中不满足ele.isEmpty条件的元素,返回一个List[String]
    filter(ele => ele.isEmpty):保留集合中满足ele.isEmpty条件的元素,返回一个List[String]
    groupBy(ele => ele):将集合中的元素进行分组,返回一个Map[A,List[B]]-A、B表示任何类型

2.scala中”_”下划线的作用

1.占位符

1.作用:表示默认值,在使用默认值时必须指定变量的类型
2.demo:var t:String = _ 
    输出结果:null

2.表示函数中的参数

1.作用:如果参数函数的参数,在函数的方法体中只被使用一次,并且不与其它值进行组合,则参数可以使用_代替
2.demo:wc.map(ele => ele.split(","))  --->  wc.map(_.split(","))

3.scala中高阶函数简写的条件

1.标准方式

demo:sayHello((name:String) => println(name+"Hello"))

2.在高阶函数中参数函数的类型值可以被自动推断,所依可以省略

demo:sayHello((name) => println(name+"Hello"))

3.对于只有一个参数的参数函数来说,可以省略参数的圆括号

demo:sayHello(name => println(name+"Hello"))

4.如果参数函数的参数,在函数方法体中只被使用一次,并且不与其它值进行组合,则参数可以使用_代替

demo:sayHello(println(_))

5.直接调用系统函数

demo:sayHello(println)

4.scala中定义函数时可以省略的条件

1.标准方式

demo:def f_name(param:param_type,...):return_type = {def_body}

2.如果函数中只有一行,可以省略大括号

demo:def sayHello(name:String):String = name+"Hello"

3.当函数的返回值类型可以被推断时,可以省略返回值类型

demo:def sayHello(name:String) = {name+"Hello"}

4.当函数没有返回值或者返回值类型为Unit时,可以省略放回值定义

原型:def sayHello(name:String):Unit = {println(name)}
demo:def sayHello(name:String){println(name)}

5.结合以上1,2

demo:def sayHello(name:String) = name+"Hello"

4.scala语法和java语法的区别

1.算术运算符

1.scala中没有++、--、opt ? val:val2(三目运算符)

2.函数

1.scala中函数体没有返回return语句,最后一行的值即为返回值
2.在scala中每条语句结尾可以不写";"号表示此语句结束,默认一条语句一行

3.ojbect

1.在scala中object相当于java中的public class
2.object中的函数都是静态函数
3.object中属性和函数默认的修饰符是public
4.scala中main函数def main(args:Array[String]):Unit={}是程序的入口只能定义在object中,相当于java中的public static void main(String:args){}

4.scala中class和java中class

5.scala中Trait相当于java中的Interface

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值