本文介绍Scala中的Array数据结构。
1、基本知识
Scala中Array是一个固定大小、存储的元素类型都相同的数据结构。
Array是可变、可索引的数据集合。
Array的index是从 0 开始的,最大为 Array长度-1。
2、Array的定义/声明方法
2.1 直接实例化
//in scala
//直接实例化定义一个Array
var student = Array("John","Adam","Rob","Reena","Harry")
2.2 先声明一个array变量 ,后为其赋值
//in scala
//先声明后赋值的方法
//声明array变量的基本语法:var thisArray = new Array[datatype](size)
var student = new Array[String](5)
//或者 var student:Array[String] = new Array[String](5)
//声明Array变量后赋值的方法
student(0) = "Martin"
student(1) = "Jack"
student(2) = "Jill"
student(3) = "Paul"
student(4) = "Kevin"
2.3、使用range函数定义array
range()方法可以生成一个包含整数类型元素的array。参数为:开始整数、结束整数、步长。默认步长是1。
当然range()方法也是写在Array包里的,需要先导入,或者在前面加上Array包名,指明方法位置。
//in scala
var id = Array.range(7, 23, 3)
2.4、定义一个空的Array
//定义一个空的Array
val a = Array.empty
2.5 判断一个array是不是空的。isEmpty方法,返回true or false。
var id = Array(7, 23, 3)
id.isEmpty
3、Array的处理方法
使用for循环来处理Array中的数据。
两种方式利用for循环获取Array中的元素。
方法一,直接对Array进行迭代访问。
方法二,使用index从[0, array.length-1] 对Array中元素进行方法。
object Test {
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);
}
}
4、多维Arrays
多维arrays是一种特殊的Array,它的每个元素也是多维arrays。
使用Array.ofDim 方法声明一个多维Arrays。[]中声明元素数据类型,()中接受的参数为多维Array的维度,可以定义2维、3维,...N维的array。
object Test {
def main(args:Array[String]) {
val rows = 2
val cols = 3
val heights = 2
val multidim = Array.ofDim[String](rows,cols,heights) //定义多维array
multidim(0)(0)(0) = "Reena" //为多维array赋值
multidim(0)(1)(0) = "John"
multidim(0)(2)(0) = "Adam"
multidim(1)(0)(1) = "Michael"
multidim(1)(1)(1) = "Smith"
multidim(1)(2)(1) = "Steve"
for {
i <- 0 until rows
j <- 0 until cols
k <- 0 until heights
}
println(s"($i)($j)($k) = ${multidim(i)(j)(k)}") //for循环读取多维array中元素
}
}
5、拼接多个Array
Array.concate()方法可以用来拼接多个array,()里的参数为需要拼接的array。
concate()方法是定义在Array包里的,使用的时候要么加上Array.声明位置,要么导入进来,即 import Array._
//in scala
object Test {
def main(args: Array[String]) {
val sname = Array("John","Adam","Rob","Reena","Harry")
val sname1 = Array("Jack","Jill","Henry","Mary","Rohan")
val sname2 = Array("Jack","Jill","Rob","Toby")
var names = Array.concat( sname, sname1,sname2)
println("Student name array elements are : ");
for ( n1 <- names ) {
println( n1 )
}
}
}
6、其他函数
6.1 参考博文 scala 数组函数大全(143个1个不漏,全面案例详解)
6.2 将Array中的所有元素作为字符串显示 .mkString(sep) 方法
val answer = Array(true,false,true)
println(answer)
println(answer.mkString(","))