Scala数组示例
Scala支持数组数据结构。
数组是固定大小的数据结构,用于存储相同数据类型的元素。
数组的第一个元素的索引为零,最后一个元素的元素总数为一。
Scala数组声明
声明数组变量的语法是
var arrayname = new Array[datatype](size)
var表示变量,arrayname是数组的名称,new是关键字,datatype表示数据的类型,例如整数,字符串和大小是数组中元素的数量。
例如,
var student = new Array[String](5) Or var student:Array[String] = new Array[String](5)
这里的Student是一个包含五个元素的字符串数组。
可以将值分配给数组,如下所示。
var student = Array("John","Adam","Rob","Reena","Harry") or student(0) = "Martin" ; student(1) = "Hyman" ; student(2) = "Jill" ; student(3) = "Paul" ; student(4) = "Kevin"
Scala 数组处理
在处理数组时,我们使用for循环,因为元素具有相同的数据类型。
考虑下面的示例。
object Student { def main(args: Array[String]) { var marks = Array(75,80,92,76,54) println("Array elements are : ") for ( m1 <- marks ) { println(m1 ) } var gtot = 0.0 for ( a <- 0 to (marks.length - 1)) { gtot += marks(a); } println("Grand Total : " + gtot); var average = 0.0 average = gtot/5; println("Average : " + average); } }
其中我们正在创建Integer数据类型的marks数组。
我们正在使用for循环打印数组的元素。
我们正在通过添加所有元素来计算总分,并通过将总分除以受试者数来计算平均值。
下图显示了以上程序的执行。
Scala多维数组
多维数组可以定义为元素为数组的Array。
考虑下面的示例。
object Multidim { def main(args:Array[String]) { val rows = 2 val cols = 3 val multidim = Array.ofDim[String](rows,cols) multidim(0)(0) = "Reena" multidim(0)(1) = "John" multidim(0)(2) = "Adam" multidim(1)(0) = "Michael" multidim(1)(1) = "Smith" multidim(1)(2) = "Steve" for { i <- 0 until rows j <- 0 until cols } println(s"($i)($j) = ${multidim(i)(j)}") } }
我们使用" ofDim"方法创建一个包含2行3列的二维数组,该方法接受行和列作为参数。
将元素作为接受字符串参数的行和列添加到数组中。
我们使用for循环检索插入的元素。
将上面的代码保存在" Multidim.scala"中,并如下图所示运行。
Scala串联数组
可以使用concat
方法来连接两个数组。
数组名称可以作为参数传递给concat方法。
下面是显示如何连接两个数组的示例。
import Array._ object Student { def main(args: Array[String]) { var sname = Array("John","Adam","Rob","Reena","Harry") var sname1 = Array("Hyman","Jill","Henry","Mary","Rohan") var names = concat( sname, sname1) println("Student name array elements are : "); for ( n1 <- names ) { println( n1 ) } } }
由于数组方法concat是在包中定义的,因此我们必须使用import Array._。
我们声明了两个以学生姓名为元素的数组sname和sname1。
我们使用concat方法连接这两个数组,并将sname和sname1作为参数传递并将结果元素存储在names数组中。
将代码保存在Student.scala
中,然后按照下图所示编译并运行。
具有范围的Scala数组
range()方法生成一个包含整数序列的数组。
最后一个参数用作生成整数序列的步骤。
如果未指定参数,则默认值为1。
让我们通过一个例子来了解这种范围方法。
import Array._ object Student { def main(args: Array[String]) { var id = range(7, 23, 3) var age = range(15,20) for ( s <- id ) { print( " " + s) } println() for ( a <- age ) { print( " " + a ) } } }
我们声明数组id和age并使用range方法生成元素。
元素从7到23递增3。
对于年龄,从15到20递增1的值。
通过输入Student.main(null)
运行以上代码,您将看到以下输出。
7 10 13 16 19 22 15 16 17 18 19
在结束本文之前,下面是一些有用的Array方法:
- def concat [T](xss:Array [T] *):Array [T]:将所有数组合并为一个数组
- def empty [T]:Array [T]:返回长度为0的数组
- def ofDim T:Array [Array [T]]:创建二维数组
- def range(开始:Int,结束:Int,步骤:Int):Array [Int]:返回一个数组,该数组包含某个整数间隔中的等距值
- def copy(src:AnyRef,srcPos:Int,dest:AnyRef,destPos:Int,length:Int):单位:将一个数组复制到另一个
- def ofDim T:Array [Array [Array [T]]]:创建一个三维数组