Scala>scala数组

数组

scala中,有两种数组,一种是定长数组,另一种是变长数组


定长数组

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

语法

# 通过指定长度定义数组
val/var 变量名 = new Array[元素类型](数组长度)
# 用元素直接初始化数组
val/var 变量名 = Array(元素1, 元素2, 元素3...)
  • 在scala中,数组的泛型使用[]来指定
  • 使用()来获取元素

参考代码

scala> val a = new Array[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) = 110
​
scala> println(a(0))
110

变长数组

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

定义变长数组
创建变长数组,需要提前导入ArrayBuffer
import scala.collection.mutable.ArrayBuffer
语法
创建空的ArrayBuffer变长数组,语法结构:

val/var a = ArrayBuffer[元素类型]()

创建带有初始元素的ArrayBuffer

val/var a = ArrayBuffer(元素1,元素2,元素3....)
  • 示例一
    定义一个长度为0的整型变长数组
    参考代码
val a = ArrayBuffer[Int]()
  • 示例二
    定义一个包含"hadoop", “storm”, "spark"元素的变长数组
    参考代码
scala> val a = ArrayBuffer("hadoop", "storm", "spark")
a: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(hadoop, storm, spark)

添加/修改/删除元素

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

参考代码

// 定义变长数组
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)

遍历数组

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

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

参考代码

scala> val a = Array(1,2,3,4,5)
a: Array[Int] = Array(1, 2, 3, 4, 5)

scala> for(i<-a) println(i)
1
2
3
4
5

参考代码

scala> val a = Array(1,2,3,4,5)
a: Array[Int] = Array(1, 2, 3, 4, 5)

scala> for(i <- 0 to a.length - 1) println(a(i))
1
2
3
4
5

scala> for(i <- 0 until a.length) println(a(i))
1
2
3
4
5
  • 0 until n——生成一系列的数字,包含0,不包含n
  • 0 to n ——包含0,也包含n

数组常用算法

以下为常用的几个算法:

  • 求和——sum方法
  • 求最大值——max方法
  • 求最小值——min方法
  • 排序——sorted方法
// 升序排序
scala> a.sorted
res53: Array[Int] = Array(1, 2, 4, 4, 10)

// 降序
scala> a.sorted.reverse
res56: Array[Int] = Array(10, 4, 4, 2, 1)

//求和
scala> a.sum
//最大值
scala> a.max
//最小值
scala> a.min

发布了166 篇原创文章 · 获赞 29 · 访问量 3529

猜你喜欢

转载自blog.csdn.net/qq_44509920/article/details/105343462