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

Array

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

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

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

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

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

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

获取数组内的值

Spark学习(6)——scala数组操作_第1张图片

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

ArrayBuffer

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

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

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

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

Spark学习(6)——scala数组操作_第2张图片

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

运行结果:

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

运行结果:

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

运行结果:

ArrayArrayBuffer互相转换

运行结果:

遍历Array和ArrayBuffer

for循环和until遍历ArrayArraybuffer

UntilRichInt提供的函数

Spark学习(6)——scala数组操作_第3张图片

跳跃遍历ArrayArraybuffer

从尾部遍历ArrayArraybuffer

使用增强for循环遍历ArrayArrayBuffer

数组常见操作

数组元素求和

获取数组最大值

对数组进行排序

Spark学习(6)——scala数组操作_第4张图片

获取数组中所有元素内容

数组转换

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

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

Spark学习(6)——scala数组操作_第5张图片

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

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

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

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

Val a =ArrayBuffer[Int]()

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

Spark学习(6)——scala数组操作_第6张图片

运行结果:

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

遍历ArrayArrayBuffer

遍历ArrayArrayBuffer

你可能感兴趣的:(spark学习系列)