Scala学习-Array的方法

Scala:Array

Scala 语言中提供的数组是用来存储固定大小的同类型元素,数组对于每一门编辑应语言来说都是重要的数据结构之一。
声明数组变量并不是声明 number0、number1、…、number99 一个个单独的变量,而是声明一个就像 numbers 这样的变量,然后使用 numbers[0]、numbers[1]、…、numbers[99] 来表示一个个单独的变量。数组中某个指定的元素是通过索引来访问的。
数组的第一个元素索引为0,最后一个元素的索引为元素总数减1。
同时,Scala提供了大量的集合操作:

1、数组比较(地址比较)

var a1 = Array(1,2,3)
    var a2 = Array("Tom","Jack","Mary")
    println(a1==a2) 
    println(a1 != a2)码片

在这里插入图片描述
2、数组合并:++

	var a1 = Array(1,2,3)
    var a2 = Array("Tom","Jack","Mary")
    var a3 = a1++a2
    a3.foreach(println)

在这里插入图片描述
3、头部追加/尾部追加:+: / :+

	var a1 = Array(1,2,3)
    var a2 = Array("Tom","Jack","Mary")
    var a3 = 5+:a1
    var a4 = a2:+"Ming"
    a3.foreach(println)
    a4.foreach(println)

在这里插入图片描述
4、从左向右累加 / 从右向左累加 :
/:(过期用foldleft代替)
😕(过期用foldright代替)

	var a1 = Array(1,2,3)
	println(a1.foldLeft(10)((x,y)=>{println(s"$x\t$y");x+y}))
    println(a1.foldRight(10)((x,y)=>{println(s"$x\t$y");x+y}))

在这里插入图片描述
5、将数组拼接成字符串:addString

	var a1 = Array(1,2,3)
    var builder = new mutable.StringBuilder
    a1.addString(builder,"[",",","]")
    println(builder)

在这里插入图片描述
6、聚合函数 aggregate
arr.aggregate(initValue)(mapCal,reduceCal)
map端聚合mapCal生效,不走reduce端reduceCal失效
arr.par…aggregate(initValue)(mapCal,reduceCal)
par产生分区,mapcal->reduceCal

	var a1 = Array(1,2,3)
    val add = (x:Int,y:Int) =>{
      var z = x+y
      println(s"$x + $y = $z")
      z
    }
    println(a1.aggregate(0)(add, add))
    println(a1.par.aggregate(0)(add,add))

在这里插入图片描述
在这里插入图片描述
7、addThen / compose
f1和f2只有一个参数且类型相同,f1的输出为f2的输入
先调用f1,再调用f2
先调用f2,再调用f1

	var a1 = Array(1,2,3)
    val add = (x:Int) =>{
      println("add")
      x+10
    }
    val mul = (x:Int) =>{
      println("mul")
      x*6
    }
    def rst = add andThen mul
    def rst1 = add compose mul
    println(rst(2))
    println(rst1(2))

在这里插入图片描述

8、根据索引取元素 : apply

    var a1 = Array(1,2,3)
    var a2 = Array("Tom","Jack","Mary")
    var t = a1.apply(0)
    var t2 = a2.apply(2)
    println(t)
    println(t2)

在这里插入图片描述
9、applyOrElse
根据下标取数组元素,如果越界,则返回默认值
第二个参数为偏函数

	var a1 = Array(1,2,3)
    var a2 = Array("Tom","Jack","Mary")
    println(a1.applyOrElse(10,{i:Int => "NONE"}))
    println(a2.applyOrElse(1,{i:Int => "NONE"}))

在这里插入图片描述
10、两个集合之间是否可以比较 : canEqual

	var a1 = Array(1,2,3)
    var a2 = Array("Tom","Jack","Mary")
    println(a1.canEqual(a2))

在这里插入图片描述
11、克隆一个数组的副本:clone

    var a1 = Array(1,2,3)
    var a3 = a1.clone()
    a3.foreach(println)

在这里插入图片描述
12、collect / collectFirst
收集一个弹性分布式数据集的所有元素到一个数组中

	var a1 = Array(1,2,3,6,7,8)
    a1.collect({case i if(i%2==0)=>i}).foreach(println)
    println()
    a1.collectFirst({case i if(i%2==0)=>i}).foreach(println)

在这里插入图片描述
13、combinations(n)
排序组合,不考虑顺序
n任意选择集合中n个元素进行组合

	var a1 = Array(1,2,3)
    a1.combinations(2).foreach(x=>{x.foreach(print);println()})

在这里插入图片描述
14、permutations
所有顺序不同顺序的排列

	var a1 = Array("a","b","c")
    a1.permutations.foreach(x=>println(x.mkString(",")))

在这里插入图片描述
15、contains(n)
集合中是否包含元素n

    var a1 = Array("a","b","c")
    println(a1.contains("a"))

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值