Spark学习(6)——scala数组操作

Array

scala中,Array代表的含义与Java类似,也是长度不可变的数组,此外

由于Javascala都是运行在JVM中,双方可以互相调用,因此scala的底层

实际上是Java数组,例如字符串的数组在底层实际上就是JavaString [] 数组

整数数组在底层实际上是Javaint []

数组初始化后,长度就固定下来了,而且元素全部根据其类型初始化

Spark学习(6)——scala数组操作

Spark学习(6)——scala数组操作

可以直接使用Array()创建数组,元素类型自动推断

Spark学习(6)——scala数组操作

获取数组内的值

Spark学习(6)——scala数组操作

当数组内的元素类型不一致时,scala自动推断数组类型为Any

Spark学习(6)——scala数组操作

ArrayBuffer

scala中,如需要像JavaArrayList这种长度可变的集合类,则可以使用ArrayBuffer

ArrayBuffer类不能直接使用,使用之前需要先导入ArrayBuffer

Spark学习(6)——scala数组操作

使用ArrayBuffer的方式可以创建一个空的ArrayBuffer

Spark学习(6)——scala数组操作

使用+=操作符,可以添加一个元素或者多个元素,这个方法在Spark源码中大量使用

Spark学习(6)——scala数组操作

使用++=操作符可以添加其他集合中的所有元素

运行结果:

Spark学习(6)——scala数组操作

使用trimEnd,可以从尾部截断指定个数的元素,b.trimEnd(5),

运行结果:

Spark学习(6)——scala数组操作

使用b.insert(3,5) 在指定位置插入元素

运行结果:

Spark学习(6)——scala数组操作

ArrayArrayBuffer互相转换

运行结果:

Spark学习(6)——scala数组操作

Spark学习(6)——scala数组操作

遍历Array和ArrayBuffer

for循环和until遍历ArrayArraybuffer

UntilRichInt提供的函数

Spark学习(6)——scala数组操作

跳跃遍历ArrayArraybuffer

Spark学习(6)——scala数组操作

从尾部遍历ArrayArraybuffer

Spark学习(6)——scala数组操作

使用增强for循环遍历ArrayArrayBuffer

Spark学习(6)——scala数组操作

数组常见操作

数组元素求和

Spark学习(6)——scala数组操作

获取数组最大值

Spark学习(6)——scala数组操作

对数组进行排序

Spark学习(6)——scala数组操作

获取数组中所有元素内容

Spark学习(6)——scala数组操作

Spark学习(6)——scala数组操作

Spark学习(6)——scala数组操作

Spark学习(6)——scala数组操作

数组转换

Array进行转换,获取的还是Array,对一个数组求平方,用yield

Spark学习(6)——scala数组操作

ArrayBuffer进行转换,获取的还是ArrayBuffer

Spark学习(6)——scala数组操作

结合if守卫仅转换需要的元素

Spark学习(6)——scala数组操作

使用函数式编程转换数组,filter过滤出这个数组中除2等于0的,然后map成另一个数组,将过滤出的数乘以2

Spark学习(6)——scala数组操作

算法案例:移出第一个负数之后所有的负数

构建数组,每发现第一个负数之后的负数就移出掉

Val a =ArrayBuffer[Int]()

a += (1,2,3,4,5,-1.-3.-5,-7)

Spark学习(6)——scala数组操作

运行结果:

Spark学习(6)——scala数组操作

算法案例:移出第一个负数之后所有的负数

遍历ArrayArrayBuffer

遍历ArrayArrayBuffer