1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 大数据常用语言Scala(十四):基础语法学习 数组  重点掌握

大数据常用语言Scala(十四):基础语法学习 数组  重点掌握

时间:2021-04-27 20:48:31

相关推荐

大数据常用语言Scala(十四):基础语法学习 数组  重点掌握

目录

数组重点掌握

定长数组

变长数组

遍历数组

数组常用算法

数组重点掌握

scala中数组的概念是和Java类似,可以用数组来存放一组数据。scala中,有两种数组,一种是定长数组,另一种是变长数组

定长数组

定长数组指的是数组的长度不允许改变的数组的元素可以改变

java中数组是根据类型来定义的比如 int[] String[]

在Scala中, 数组也是一个类, Array类, 存放的内容通过泛型来定义, 类似java中List的定义

语法

// 通过指定长度定义数组

val/var变量名 =newArray[元素类型](数组长度)

// 用元素直接初始化数组

val/var变量名 =Array(元素1,元素2,元素3...)

[!NOTE]

在scala中,数组的泛型使用[]来指定(java <>)使用()来获取元素(java [])

这两点要注意, 不要混淆了

示例一

定义一个长度为100的整型数组

设置第1个元素为110

打印第1个元素

参考代码

scala>vala =newArray[Int](100)a:Array[Int]=Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)scala>a(0)=110scala>println(a(0))110

示例二

定义一个包含以下元素的数组

,"scala","python"

获取数组长度

参考代码

// 定义包含jave、scala、python三个元素的数组scala>vala =Array("java","scala","python")a:Array[String]=Array(java,scala,python)scala>a.lengthres17:Int=3

为什么带初值的就不用new呢.

这里会用到一个apply方法, 我们后面会详细说.

我们现在只需要知道, 直接Array(1, 2, 3)来创建数组, 其实就是自动调用了Array类中的apply方法

apply方法做的事情就是, new array(3) 然后把3个元素放进去, 也就是这些工作自动帮我们做了.

大家先记住结论, 先会用, 后面我们学到面向对象的时候就会明白为什么啦

变长数组

变长数组指的是数组的长度是可变的,可以往数组中添加、删除元素

定义变长数组

创建变长数组,需要提前导入ArrayBuffer类import scala.collection.mutable.ArrayBuffer

语法

创建空的ArrayBuffer变长数组,语法结构:

/vara =ArrayBuffer[元素类型]()

创建带有初始元素的ArrayBuffer

/vara =ArrayBuffer(元素1,元素2,元素3....)

示例一

定义一个长度为0的整型变长数组

参考代码

vala =ArrayBuffer[Int]()为什么长度为0的就必须加泛型呢? 如果不加就是下面这样scala>vala1 =ArrayBuffer()a1:scala.collection.mutable.ArrayBuffer[Nothing]=ArrayBuffer()因为没有初值来判断泛型, 所以泛型是Nothing同时不要忘记省略(), 不要用方法调用的概念认为不带参数就可以不写括号了, 这样是不可以的, 如下:scala>vala1 =ArrayBuffer[Int]<console>:12:error:missing argument list formethod apply in classGenericCompanionUnapplied methods are only converted to functions when a function typeis expected.You can make thisconversion explicit by writing `apply _` or `apply(_)` instead of `apply`.vala1 =ArrayBuffer[Int]

就像前面提过一句的apply方法, 如果不带() 那么就不会调用apply方法, 不调用apply方法, 那么就没有ArrayBuffer的调用.也就是不知道调用谁了.

示例二

定义一个包含以下元素的变长数组

"hadoop","storm","spark"

参考代码

scala>vala =ArrayBuffer("hadoop","storm","spark")a:scala.collection.mutable.ArrayBuffer[String]=ArrayBuffer(hadoop,storm,spark)

添加/修改/删除元素

使用+=添加元素使用-=删除元素使用++=追加一个数组到变长数组

示例

定义一个变长数组,包含以下元素: "hadoop", "spark", "flink"

往该变长数组添加一个"flume"元素

从该变长数组删除"hadoop"元素

再将一个数组,该数组包含"hive", "sqoop"追加到变长数组中

参考代码

// 定义变长数组scala>vala =ArrayBuffer("hadoop","spark","flink")a:scala.collection.mutable.ArrayBuffer[String]=ArrayBuffer(hadoop,spark,flink)// 追加一个元素scala>a +="flume"res10:a.type=ArrayBuffer(hadoop,spark,flink,flume)// 删除一个元素scala>a -="hadoop"res11:a.type=ArrayBuffer(spark,flink,flume)// 追加一个数组scala>a ++=Array("hive","sqoop")res12:a.type=ArrayBuffer(spark,flink,flume,hive,sqoop)

遍历数组

可以使用以下两种方式来遍历数组:

使用for表达式直接遍历数组中的元素使用索引遍历数组中的元素

示例一

定义一个数组,包含以下元素1,2,3,4,5

使用for表达式直接遍历,并打印数组的元素

参考代码

scala>vala =Array(1,2,3,4,5)a:Array[Int]=Array(1,2,3,4,5)scala>for(i<-a)println(i)12345

示例二

定义一个数组,包含以下元素1,2,3,4,5

使用for表达式基于索引下标遍历,并打印数组的元素

参考代码

scala>vala =Array(1,2,3,4,5)a:Array[Int]=Array(1,2,3,4,5)scala>for(i <-0to a.length -1)println(a(i))12345scala>for(i <-0until a.length)println(a(i))12345

[!NOTE]

0 until n——生成一系列的数字,包含0,不包含n

0 to n ——包含0,也包含n

数组常用算法

scala中的数组封装了一些常用的计算操作,将来在对数据处理的时候,不需要我们自己再重新实现。以下为常用的几个算法:

求和——sum方法求最大值——max方法求最小值——min方法排序——sorted方法

求和

数组中的sum方法可以将所有的元素进行累加,然后得到结果

示例

定义一个数组,包含以下几个元素(1,2,3,4)

请计算该数组的和

参考代码

scala>vala =Array(1,2,3,4)a:Array[Int]=Array(1,2,3,4)scala>a.sumres49:Int=10

最大值

数组中的max方法,可以获取到数组中的最大的那个元素值

示例

定义一个数组,包含以下几个元素(4,1,2,4,10)

获取数组的最大值

参考代码

scala>vala =Array(4,1,2,4,10)a:Array[Int]=Array(4,1,2,4,10)scala>a.maxres50:Int=10

最小值

数组的min方法,可以获取到数组中最小的那个元素值

示例

定义一个数组,包含以下几个元素(4,1,2,4,10)

获取数组的最小值

参考代码

scala>vala =Array(4,1,2,4,10)a:Array[Int]=Array(4,1,2,4,10)scala>a.minres51:Int=1

排序

数组的sorted方法,可以对数组进行升序排序。而reverse方法,可以将数组进行反转,从而实现降序排序

示例

定义一个数组,包含以下几个元素(4,1,2,4,10)

对数组进行升序排序、降序排序

参考代码

// 升序排序scala>a.sortedres53:Array[Int]=Array(1,2,4,4,10)// 降序scala>a.sorted.reverseres56:Array[Int]=Array(10,4,4,2,1)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。