整理常用Scala函数代码供大家参考(附wordcount源码)

本文详细介绍了Scala中偏应用函数、高阶函数、柯里化函数等核心特性,并提供了完整的Wordcount大数据处理示例。通过实例展示了如何在Scala中使用这些高级函数,以及如何在Spark上实现Wordcount任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

随着大数据的发展,spark逐渐成为主流技术之一,而且支撑的scala语言也成为做大数据热门的编程语言之一,在家无聊,就将scala中一些常用的的scala的高端函数以及set、map等代码进行整理,在最后有一个完整的wordcount大数据入门源码

偏应用函数

偏应用函数是一种表达式,不需要提供函数需要的所有参数,只需要提供部分,或不提供所需参数。

    /**

     * 偏应用函数

     */

deflog(date :Date, s :String)= {

      println("date is "+ date +",log is "+ s)

    }

    val date = new Date()

    log(date ,"log1")

    log(date ,"log2")

    log(date ,"log3")

 

    //想要调用log,以上变化的是第二个参数,可以用偏应用函数处理

vallogWithDate = log(date,_:String)

    logWithDate("log11")

    logWithDate("log22")

    logWithDate("log33")

高阶函数

函数的参数是函数,或者函数的返回类型是函数,或者函数的参数和函数的返回类型是函数的函数。

l 函数的参数是函数

l 函数的返回是函数

l 函数的参数和函数的返回是函数

    /**

     * 高阶函数

     * 函数的参数是函数 或者函数的返回是函数 或者函数的参数和返回都是函数

     */

 

    //函数的参数是函数

    def hightFun(f : (Int,Int) =>Int, a:Int ) : Int = {

      f(a,100)

    }

deff(v1 :Int,v2: Int):Int  = {

      v1+v2

    }

 

    println(hightFun(f, 1))

 

    //函数的返回是函数

    //1,2,3,4相加

defhightFun2(a : Int,b:Int) : (Int,Int)=>Int = {

deff2 (v1: Int,v2:Int) :Int = {

        v1+v2+a+b

      }

      f2

    }

    println(hightFun2(1,2)(3,4))

 

    //函数的参数是函数,函数的返回是函数

defhightFun3(f : (Int ,Int) => Int) : (Int,Int) => Int = {

      f

    }

    println(hightFun3(f)(100,200))

    println(hightFun3((a,b) =>{a+b})(200,200))

    //以上这句话还可以写成这样

    //如果函数的参数在方法体中只使用了一次 那么可以写成_表示

    println(hightFun3(_+_)(200,200))

柯里化函数

l 可以理解为高阶函数的简化

   /**

     * 柯里化函数

     */

    def fun7(a :Int,b:Int)(c:Int,d:Int) = {

      a+b+c+d

    }

    println(fun7(1,2)(3,4))

Scala字符串

1. String

2. StringBuilder 可变

3. string操作方法举例

Ø 比较:equals

Ø 比较忽略大小写:equalsIgnoreCase

Ø indexOf:如果字符串中有传入的assci码对应的值,返回下标

    /**

     * String && StringBuilder

     */

valstr = "abcd"

valstr1 = "ABCD"

 

    println(str.indexOf(97))

    println(str.indexOf("b"))

 

    println(str==str1)

    /**

     * compareToIgnoreCase

     *

     * 如果参数字符串等于此字符串,则返回值 0;

     * 如果此字符串小于字符串参数,则返回一个小于 0 的值;

     * 如果此字符串大于字符串参数,则返回一个大于 0 的值。

     *

     */

    println(str.compareToIgnoreCase(str1))

 

valstrBuilder =newStringBuilder

    strBuilder.append("abc")

//    strBuilder.+('d')

    strBuilder+ 'd'

//    strBuilder.++=("efg")

    strBuilder++= "efg" 

//    strBuilder.+=('h')

    strBuilder+= 'h' 

    strBuilder.append(1.0)

    strBuilder.append(18f)

    println(strBuilder)

集合

数组

1. 创建数组

Ø new Array[Int](10)

赋值:arr(0) = xxx

Ø Array[String](“s1”,”s2”,”s3”)

2. 数组遍历

Ø for

Ø foreach

3. 创建一维数组和二维数组

4. 数组中方法举例

Ø Array.concate:合并数组

Ø Array.fill(5)(“bjsxt”):创建初始值的定长数组

创建两种方式:

   /**

     * 创建数组两种方式:

     * 1.new Array[String](3)

     * 2.直接Array

     */

    //创建类型为Int 长度为3的数组

valarr1 =newArray[Int](3)

    //创建String 类型的数组,直接赋值

valarr2&n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值