在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

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

Scala數(shù)組

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

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

聲明數(shù)組變量

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

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

語(yǔ)法

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

// 或者

var z = new Array[String](3)

這里,變量z被聲明為可以容納三個(gè)元素的字符串?dāng)?shù)組??梢詫⒅捣峙浣o單個(gè)元素或訪問(wèn)每個(gè)元素,訪問(wèn)元素通過(guò)使用如下命令來(lái)完成:

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

一般來(lái)說(shuō),索引可以是產(chǎn)生整數(shù)的任何表達(dá)式。還有一種定義數(shù)組的方法 -

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

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

處理處理

當(dāng)處理數(shù)組元素時(shí),我們經(jīng)常使用循環(huán)控制結(jié)構(gòu),因?yàn)閿?shù)組中的所有元素都是相同的類型,數(shù)組的大小是已知的。

下面是一個(gè)示例程序,演示如何創(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ù)組操作,它提供各種方法來(lái)處理任何維度的數(shù)組。 如果要使用不同的方法,則需要導(dǎo)入Array._包。

多維數(shù)組

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

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

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

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

嘗試以下示例程序來(lái)處理多維數(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()方法連接兩個(gè)數(shù)組的以下示例。可以將多個(gè)數(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()方法來(lái)生成包含給定范圍內(nèi)增加整數(shù)序列的數(shù)組。 您可以使用final參數(shù)作為步差來(lái)創(chuàng)建序列; 如果不使用final參數(shù),則步差將被假定為1。

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

另一個(gè)例子:range(10,20)。 這里的范圍不同,默認(rèn)情況下它假定為1個(gè)元素。 它創(chuàng)建一個(gè)數(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ù)組時(shí)可以使用的重要方法。 如上所示,必須在使用任何上述方法之前導(dǎo)入Array._包。 有關(guān)可用方法的完整列表,請(qǐng)查看Scala的官方文檔。

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