3、Scala数据结构Array

本文介绍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(","))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值