鍍金池/ 教程/ Scala/ Scala數(shù)組
Scala方法重載
Scala模式匹配
Scala throw關鍵字
Scala提取器
Scala概述
Scala throws關鍵字
Scala finally塊
Scala正則表達式
Scala循環(huán)語句
Scala多線程
Scala函數(shù)
Scala final關鍵字
Scala方法覆蓋
Scala字符串
Scala線程實現(xiàn)
Scala異常處理
Scala類和對象
Scala數(shù)據(jù)類型
Scala單例和伴生對象
Scala構造函數(shù)
Scala教程
Scala Case類和對象
Scala繼承
Scala開發(fā)環(huán)境安裝配置
Scala運算符
Scala文件I/O
Scala線程方法
Scala變量
Scala try-catch語句
Scala基礎語法
Scala集合
Scala數(shù)組
Scala閉包
Scala訪問修辭符
Scala this關鍵字

Scala數(shù)組

Scala提供了一種數(shù)據(jù)結構叫作數(shù)組,數(shù)組是一種存儲了相同類型元素的固定大小順序集合。數(shù)組用于存儲數(shù)據(jù)集合,但將數(shù)組視為相同類型變量的集合通常更為有用。

可以聲明一個數(shù)組變量,例如:numbers,使用numbers[0],numbers[1]...,numbers[99]來表示單個變量,而不是分別地聲明每個變量,例如number0,number1,...等變量。 本教程介紹如何使用索引變量聲明數(shù)組變量,創(chuàng)建數(shù)組和使用數(shù)組。數(shù)組的第一個元素的索引是數(shù)字0,最后一個元素的索引是元素的總數(shù)減去1。

聲明數(shù)組變量

要在程序中使用數(shù)組,必須先聲明一個變量來引用數(shù)組,并且必須指定變量可引用的數(shù)組類型。

以下是聲明數(shù)組變量的語法。

語法

var z:Array[String] = new Array[String](3)

// 或者

var z = new Array[String](3)

這里,變量z被聲明為可以容納三個元素的字符串數(shù)組。可以將值分配給單個元素或訪問每個元素,訪問元素通過使用如下命令來完成:

z(0) = "Zara"; z(1) = "Nuha"; z(4/2) = "Ayan"

一般來說,索引可以是產生整數(shù)的任何表達式。還有一種定義數(shù)組的方法 -

var z = Array("Maxsu", "Nancy", "Alen")

以下圖片表示一個名稱為:myList的數(shù)組。 這里,myList保存十個雙精度(double)值,索引為09。

處理處理

當處理數(shù)組元素時,我們經常使用循環(huán)控制結構,因為數(shù)組中的所有元素都是相同的類型,數(shù)組的大小是已知的。

下面是一個示例程序,演示如何創(chuàng)建,初始化和處理數(shù)組 -

示例

object Demo {
   def main(args: Array[String]) {
      var myList = Array(1.9, 2.9, 3.4, 3.5)

      // Print all the array elements
      for ( x <- myList ) {
         println( x )
      }

      // Summing all elements
      var total = 0.0;

      for ( i <- 0 to (myList.length - 1)) {
         total += myList(i);
      }
      println("Total is " + total);

      // Finding the largest element
      var max = myList(0);

      for ( i <- 1 to (myList.length - 1) ) {
         if (myList(i) > max) max = myList(i);
      }

      println("Max is " + max);
   }
}

將上述程序保存在源文件:Demo.scala中,使用以下命令編譯和執(zhí)行此程序。

D:\>scalac Demo.scala
D:\>scala Demo

1.9
2.9
3.4
3.5
Total is 11.7
Max is 3.5

Scala不直接支持各種數(shù)組操作,它提供各種方法來處理任何維度的數(shù)組。 如果要使用不同的方法,則需要導入Array._包。

多維數(shù)組

在許多情況下,需要定義和使用多維數(shù)組(即數(shù)組的數(shù)組)。 例如,矩陣和表是可以被實現(xiàn)為二維數(shù)組結構的例子。

以下是定義二維數(shù)組的示例 -

var myMatrix = ofDim[Int](3,3)

這是一個具有三個元素的數(shù)組,每個元素都是一個具有三個元素的整數(shù)數(shù)組。

嘗試以下示例程序來處理多維數(shù)組 -

import Array._

object Demo {
   def main(args: Array[String]) {
      var myMatrix = ofDim[Int](3,3)

      // build a matrix
      for (i <- 0 to 2) {
         for ( j <- 0 to 2) {
            myMatrix(i)(j) = j;
         }
      }

      // Print two dimensional array
      for (i <- 0 to 2) {
         for ( j <- 0 to 2) {
            print(" " + myMatrix(i)(j));
         }
         println();
      }
   }
}

將上述程序保存在源文件:Demo.scala中,使用以下命令編譯和執(zhí)行此程序。

D:\>scalac Demo.scala
D:\>scala Demo

0 1 2
0 1 2
0 1 2

連接陣列

嘗試使用concat()方法連接兩個數(shù)組的以下示例??梢詫⒍鄠€數(shù)組作為參數(shù)傳遞給concat()方法。

import Array._

object Demo {
   def main(args: Array[String]) {
      var myList1 = Array(1.9, 2.9, 3.4, 3.5)
      var myList2 = Array(8.9, 7.9, 0.4, 1.5)

      var myList3 =  concat( myList1, myList2)

      // Print all the array elements
      for ( x <- myList3 ) {
         println( x )
      }
   }
}

將上述程序保存在源文件:Demo.scala中,使用以下命令編譯和執(zhí)行此程序。

D:\>scalac Demo.scala
D:\>scala Demo

1.9
2.9
3.4
3.5
8.9
7.9
0.4
1.5

使用范圍創(chuàng)建數(shù)組

使用range()方法來生成包含給定范圍內增加整數(shù)序列的數(shù)組。 您可以使用final參數(shù)作為步差來創(chuàng)建序列; 如果不使用final參數(shù),則步差將被假定為1。

讓我們舉個例子來創(chuàng)建一個范圍(10,20,2)的數(shù)組:創(chuàng)建一個數(shù)組,其元素介于1020之間,范圍步差為2,數(shù)組中的元素是:10,12,14,1618

另一個例子:range(10,20)。 這里的范圍不同,默認情況下它假定為1個元素。 它創(chuàng)建一個數(shù)組,其元素介于1020之間,范圍步差為1。數(shù)組中的元素為:10,11,12,13,...19。

以下示例程序顯示如何使用范圍創(chuàng)建數(shù)組。

示例

import Array._

object Demo {
   def main(args: Array[String]) {
      var myList1 = range(10, 20, 2)
      var myList2 = range(10,20)

      // Print all the array elements
      for ( x <- myList1 ) {
         print( " " + x )
      }

      println()
      for ( x <- myList2 ) {
         print( " " + x )
      }
   }
}

將上述程序保存在源文件:Demo.scala中,使用以下命令編譯和執(zhí)行此程序。

D:\>scalac Demo.scala
D:\>scala Demo

10 12 14 16 18
10 11 12 13 14 15 16 17 18 19

Scala數(shù)組方法

以下是使用數(shù)組時可以使用的重要方法。 如上所示,必須在使用任何上述方法之前導入Array._包。 有關可用方法的完整列表,請查看Scala的官方文檔。

序號 方法 說明
1 def apply( x: T, xs: T* ): Array[T] 創(chuàng)建一個T對象數(shù)組,其中T可以是:Unit,Double,Float,Long,Int,Char,ShortByte,Boolean
2 def concat[T]( xss: Array[T]* ): Array[T] 將所有數(shù)組連接成一個數(shù)組。
3 def copy( src: AnyRef, srcPos: Int, dest: AnyRef, destPos: Int, length: Int ): Unit 將一個數(shù)組復制到另一個。 相當于Java的System.arraycopy(src,srcPos,dest,destPos,length)
4 def empty[T]: Array[T] 返回長度為0的數(shù)組
5 def iterate[T]( start: T, len: Int )( f: (T) => T ): Array[T] 返回一個包含函數(shù)的重復應用程序到一個起始值的數(shù)組。
6 def fill[T]( n: Int )(elem: => T): Array[T] 返回一個包含某些元素計算結果的數(shù)組。
7 def fill[T]( n1: Int, n2: Int )( elem: => T ): Array[Array[T]] 返回一個包含一些元素計算結果的二維數(shù)組。
8 def iterate[T]( start: T, len: Int)( f: (T) => T ): Array[T] 返回一個包含一個函數(shù)的重復應用程序到一個起始值的數(shù)組。
9 def ofDim[T]( n1: Int ): Array[T] 創(chuàng)建具有給定維度的數(shù)組。
10 def ofDim[T]( n1: Int, n2: Int ): Array[Array[T]] 創(chuàng)建一個二維數(shù)組
11 def ofDim[T]( n1: Int, n2: Int, n3: Int ): Array[Array[Array[T]]] 創(chuàng)建一個3維數(shù)組
12 def range( start: Int, end: Int, step: Int ): Array[Int] 返回一個整數(shù)間隔中包含相等間隔值的數(shù)組。
13 def range( start: Int, end: Int ): Array[Int] 返回一個包含一個范圍內增加整數(shù)序列的數(shù)組。
14 def tabulate[T]( n: Int )(f: (Int)=> T): Array[T] 0開始的整數(shù)值范圍內,返回一個包含給定函數(shù)值的數(shù)組。
15 def tabulate[T]( n1: Int, n2: Int )( f: (Int, Int ) => T): Array[Array[T]] 返回一個二維數(shù)組,其中包含從0開始的整數(shù)值范圍內給定函數(shù)的值。

上一篇:Scala線程方法下一篇:Scala運算符