scala基础语法(二)

九.数组操作

flatMap

 val arr = Array(Array(1, 2, 5, 4), Array(3, 6, 7, 8), Array(9, 10))
    //flatten只能一次压一层
    val flatten = arr.flatten
    println(flatten.toBuffer)
    val lines = Array("spark hadoop flink spark", "spark spark flink", "spark flink")
    val lines1 = lines.map(_.split(" "))
    lines1.flatten
    lines.map(_.split(" ")).flatten
    lines.flatMap(_.split(" "))
    //以上三者相同  但是后两者更能凸显函数式编程的好处
//三者输出结果都是
ArrayBuffer(spark, hadoop, flink, spark, spark, spark, flink, spark, flink)
  }

Fold

def main(args: Array[String]): Unit = {
    val arr = Array(1, 2, 3, 4, 5)
    //柯里化方法  第一个_ 代表初始值(100) 或者中间累加的结果
    val r = arr.fold(100)(_ + _)
    100+arr.reduce(_+_) //等价于 r
    //左右的_ + _ 是一样的结果
    arr.foldLeft(100)(_+_)
    arr.foldRight(100)(_+_)

    arr.foldLeft(100)(_-_)
    arr.foldRight(100)(_-_) //(1-(2-(3-(4-(5-100)))))=-97
    println(r)
  }

ReduceLeft和ReduceRight

 def main(args: Array[String]): Unit = {
    val arr = Array(1, 2, 3, 4, 5)
    //1+2=3
    //3+3=6
    //6+4=10 ...
    arr.reduceLeft(_+_)
    //1-2 -3 -4 - 5 =-13
    arr.reduceLeft(_-_)
    //(1-(2(3-(4-5))))
    val i = arr.reduceRight(_ - _)
    println(i)
  }

Tuple

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

    //元祖一旦定义  不能更改长度 不能更改值
    //可以装不同类型的数组
    val t = (2, 3.0) //tuple
    val r = t._2 //没有t._0
    println(r) //3.0
    println(t.swap) //(3.0,2),对偶元组的位置交换
    //只有两个元素的元祖也可以称为对偶元组

  }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值