文章目录
概念
scala中数组的概念是和Java类似,可以用数组来存放一组数据。scala中,有两种数组,一种是
定长数组
,另一种是变长数组
定长数组
概念
- 定长数组指的是数组的长度是不允许改变的
- 数组的元素是可以改变的
语法
// 在scala中,数组的泛型使用`[]`来指定
// 使用`()`来获取元素
// 通过指定长度定义数组
val/var 变量名 = new Array[元素类型](数组长度)
// 用元素直接初始化数组
val/var 变量名 = Array(元素1, 元素2, 元素3...)
代码示例
//方式一
//创建
val a = new Array[Int](100)
//赋值
a(0) = 110
//输出
println(a(0))
//方式二
// 定义包含jave、scala、python三个元素的数组
val a = Array("java", "scala", "python")
//获取数组的长度
a.length
变长数组
概念
变长数组指的是数组的长度是可变的,可以往数组中添加、删除元素
定义
创建变长数组,需要提前导入ArrayBuffer类import scala.collection.mutable.ArrayBuffer
语法
//创建空的可变长度数组
val/var a = ArrayBuffer[元素类型]()
//创建带有初始元素的ArrayBuffer
val/var a = ArrayBuffer(元素1,元素2,元素3....)
代码示例
//导包
import scala.collection.mutable.ArrayBuffer
//定义一个长度为0的整型变长数组
val a = ArrayBuffer[Int]()
//定义一个包含"hadoop", "storm", "spark" 三个元素的变长数组
val a = ArrayBuffer("hadoop", "storm", "spark")
添加/修改/删除元素
- 使用
+=
添加元素- 使用
-=
删除元素- 使用
++=
追加一个数组到变长数组
代码示例
//往刚创建的 变长数组a 中添加 "flume" 这个元素
a += "flume"
// 删除一个元素
a -= "hadoop"
// 追加一个数组 该数组中包含 hive 和 sqoop 两个属性
a ++= Array("hive", "sqoop")
遍历数组
一般使用两种方式
- 使用
for表达式
直接遍历数组中的元素- 使用
索引
遍历数组中的元素
直接遍历
代码示例
//定义一个数组
val a: Array[Int] =Array(1,2,3,4,5)
//直接遍历输出
for (i <- a ) {
println(i)
}
根据索引遍历
代码示例
//说明
//0 until n——生成一系列的数字,包含0,不包含n
//0 to n ——包含0,也包含n
//定义一个数组
val a: Array[Int] =Array(1,2,3,4,5)
//方式一
for (i <- 0 to a.length-1) {
println(i)
}
//方式二
for ( i <- 0 until a.length){
println(a(i));
}
//方式三 indices 获取索引
for (i <- a.indices) {
println(a(i));
}
数组常用算法
scala中的数组封装了一些常用的计算操作,将来在对数据处理的时候,不需要我们自己再重新实现。以下为常用的几个算法:
- 求和——sum方法
- 求最大值——max方法
- 求最小值——min方法
- 排序——sorted方法
求和
数组中的
sum
方法可以将所有的元素进行累加,然后得到结果
代码示例
val b: Array[Int] =Array(1,2,3,4,5,6,7,8,9)
println(b.sum)
求最大值
数组中的
max
方法,可以获取到数组中的最大的那个元素值
代码示例
//定义一个数组
val c: Array[Int] =Array(1,2,3,9,5,12,5,8,10)
//输出最大值
println(c.max)
求最小值
数组的
min
方法,可以获取到数组中最小的那个元素值
代码示例
//输出最小值
println(c.min)
排序
数组的sorted
方法,可以对数组进行升序排序。而reverse
方法,可以将数组进行反转,从而实现降序排序
代码示例
//定义一个数组
val c: Array[Int] =Array(1,2,3,9,5,12,5,8,10)
//升序
c.sorted
//降序
c.sorted.reverse
来源:CSDN
作者:红尘丶世界
链接:https://blog.csdn.net/hongchenshijie/article/details/104011381