数组

Scala语言中提供的数组是用来存储固定大小的同类型元素的。数组的第一个元素索引为0,最后一个元素的索引为元素总数减1。

Scala中数组分为定长数组和变长数组。创建定长数组Array的两种方式:

  • 先创建,后赋值;
  • 创建的同时赋初值。

例如,在下面的代码中,创建了一个名为names的数组,用来存储3个人的姓名:

val names = Array("张三","李四","王老五")
names(0)
names(1)
names(2)
names(0) = "张小三"           // 数组元素的值可以改变
names(0)

val numbers = Array(1,2,3,4,5)
numbers(0) + numbers(1)

输出如下所示:

names: Array[String] = Array(张三, 李四, 王老五) 
res16: String = 张三 
res17: String = 李四 
res18: String = 王老五 
res20: String = 张小三 

numbers: Array[Int] = Array(1, 2, 3, 4, 5) 
res21: Int = 3

也可以先创建一个空的数组,然后再赋值,如下面的代码所示:

val arrs = new Array[Int](3)     // 先创建一个长度为3的整型数组,所有元素初始化为0
arrs(0)
arrs(0) = 1
arrs(1) = 11
arrs

val arrs1 = new Array[String](3)
arrs1(0)

val arrs2 = new Array[Boolean](3)
arrs2(0)

输出结果如下:

arrs: Array[Int] = Array(0, 0, 0) 
res9: Int = 0 
res12: Array[Int] = Array(1, 11, 0) 

arrs1: Array[String] = Array(null, null, null) 
res13: String = null 

arrs2: Array[Boolean] = Array(false, false, false) 
res14: Boolean = false

也可以使用工具方法赋值(在Scala中,所有的工具方法都是在伴生对象中定义的):

val array1 = Array.fill(5)(3.5)
val array2 = Array.fill(3)(math.random)

输出结果如下:

array1: Array[Double] = Array(3.5, 3.5, 3.5, 3.5, 3.5) 
array2: Array[Double] = Array(0.6765717365372399, 0.936889692262062, 0.9403123661472736)

注:关于数组更详细的内容,我们将在1.4小节详细讲解。


《Flink原理深入与编程实战》