scala数组
scala数组和java类似,用来存放一组数据。
scala中,数组的泛型使用[]来指定,通过()来获取元素。此处与Java略微不同
scala中有两种数组:
- 定长数组
- 变长数组
定长数组
定长数组是指数组的长度不允许改变。数组的元素可以改变
语法
// 通过指定长度定义数组
val/var 变量名 = new Array[元素类型](数组长度)
// 用元素直接初始化数组(主要使用这种方式·)
// 这种方式实际上使用了,数组object的apply方法
val/var 变量名 = Array(元素1, 元素2, 元素3...)
示例:
scala> val a = new Array[Int](5)
a: Array[Int] = Array(0, 0, 0, 0, 0)
scala> a(0)
res0: Int = 0
scala> a
res1: Array[Int] = Array(0, 0, 0, 0, 0)
scala> val b = Array("hello","world")
b: Array[String] = Array(hello, world)
scala> b(0)
res2: String = hello
scala> b.length
res3: Int = 2
变长数组
变长数组指的是数组的长度是可变的。
创建变长数组,需要提前导入ArrayBuffer类
语法
# 创建空的ArrayBuffer数组
val/var a = ArrayBuffer[元素类型]()
# 创建带有初始元素的ArrayBuffer
val/var a = ArrayBuffer(元素1,元素2,元素3)
变长数组的增删改
- 使用
+=添加单个元素 - 使用
-=删除单个元素 - 使用
++=追加一个数组到变长数组 - 使用
--=来删除现有数组和指定数组的交集部分(非交集部分不会删除,也不会报错)
示例
// 定义变长数组
scala> val a = 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)
- -=示例
scala> val a = ArrayBuffer("hadoop", "spark", "flink")
a: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(hadoop, spark, flink)
scala> a --=Array("hadoop","spark")
res4: a.type = ArrayBuffer(flink)
scala> val a = ArrayBuffer("hadoop", "spark", "flink")
a: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(hadoop, spark, flink)
scala> a --=Array("hadoop","flink")
res5: a.type = ArrayBuffer(spark)
scala> val a = ArrayBuffer("hadoop", "spark", "flink")
a: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(hadoop, spark, flink)
scala> a --=Array("hadoop","testNoEle")
res6: a.type = ArrayBuffer(spark, flink)
遍历数组
可以用一下两种方式来遍历数组
- 使用
for表达式直接遍历数组中的元素 - 使用
索引遍历数组中的元素
示例
scala> for(i <- a)println(i)
hadoop
hive
flume
spark
//先获得数组的Index,然后通过index遍历 to左闭右闭[]
scala> for(i <- 0 to a.length -1 )println(a(i))
hadoop
hive
flume
spark
//until 左闭右开[)
scala> for(i <- 0 until a.length) println(a(i))
hadoop
hive
flume
spark
//0 until n ——>生成一系列的数字,包含0,不包含n
//0 to n ——>包含0,也包含n
数组的常用方法
scala封装了一些简单的方法
- 求和——sum方法
- 求最大值——max方法
- 求最小值——min方法
- 排序——sorted方法(生成新的数组,原数组不变)
示例
scala> val array=Array(1,3,4,2,5)
array: Array[Int] = Array(1, 3, 4, 2, 5)
//求和
scala> array.sum
res10: Int = 15
//求最大值
scala> array.max
res11: Int = 5
//求最小值
scala> array.min
res12: Int = 1
//升序 原数组不变,生成一个新的排序过的数组
scala> array.sorted
res13: Array[Int] = Array(1, 2, 3, 4, 5)
//降序 原数组不变,生成一个新的排序过的数组,通过reverse 反转新的数组
scala> array.sorted.reverse
res14: Array[Int] = Array(5, 4, 3, 2, 1)
结果

本文介绍了Scala中的数组,包括定长数组和变长数组的概念及操作。定长数组长度不可变,而变长数组允许增删改。文章详细讲解了变长数组的添加、删除和追加操作,并提供了遍历数组的两种方式,以及数组的求和、求最大值、求最小值和排序等常用方法。


被折叠的 条评论
为什么被折叠?



