Scalaの配列
提供される配列Scalaの言語が同じタイプ、各ゲートアレイ編集言語ごとに1つの固定サイズの要素を格納するために使用され、重要なデータ構造です。
配列変数の宣言number0、数値1、...、別々の変数が、この変数番号のような宣言number99が、その後の数字[0]、番号[1]、...、番号を[使用宣言されていません。 99]別々の変数を表します。 インデックスで指定された配列の要素にアクセスします。
配列インデックス0、最後の要素のインデックスの最初の要素は、要素の数から1を差し引いた値です。
配列を宣言する
以下は、構文Scalaの配列の宣言です:
var z:Array[String] = new Array[String](3) 或 var z = new Array[String](3)
三つの要素を格納することができます上記の構文は、zの配列の文字列型を宣言し、配列の長さは、3です。 私たちは、それぞれの要素の値を設定し、次のように、インデックスによって各要素にアクセスすることができます。
z(0) = "w3big"; z(1) = "Baidu"; z(4/2) = "Google"
Z(2)= "グーグル"に類似指標として4/2を使用して、式の最後の要素のインデックス。
また、以下の方法を使用して配列を定義することができます。
var z = Array("w3big", "Baidu", "Google")
次の図は、長さマイリスト10、0-9のインデックス値の配列を示しています。
配列の操作
配列の配列要素の種類と大きさが決定されるので、配列の要素を処理するとき、私たちはしばしばループのための基本を使用しています。
次の例では、配列、初期化プロセスの作成を示しています。
object Test { def main(args: Array[String]) { var myList = Array(1.9, 2.9, 3.4, 3.5) // 输出所有数组元素 for ( x <- myList ) { println( x ) } // 计算数组所有元素的总会 var total = 0.0; for ( i <- 0 to (myList.length - 1)) { total += myList(i); } println("总和为 " + total); // 查找数组中的最大元素 var max = myList(0); for ( i <- 1 to (myList.length - 1) ) { if (myList(i) > max) max = myList(i); } println("最大值为 " + max); } }
上記のコードの実装、出力は次のようになります。
$ scalac Test.scala $ scala Test 1.9 2.9 3.4 3.5 总和为 11.7 最大值为 3.5
多次元配列
配列内の多次元配列値は、別の配列にすることができ、別の配列値も配列にすることができます。 マトリックスと私たちの一般的な形式は、2次元配列です。
上記は、定義された2次元配列の例です:
var myMatrix = ofDim[Int](3,3)
配列の例としては、配列の3つの要素が含まれ、順番に各配列要素は3つの値が含まれています。
次に、我々は処理の2次元アレイの完全な例を見てみましょう。
import Array._ object Test { def main(args: Array[String]) { var myMatrix = ofDim[Int](3,3) // 创建矩阵 for (i <- 0 to 2) { for ( j <- 0 to 2) { myMatrix(i)(j) = j; } } // 打印二维阵列 for (i <- 0 to 2) { for ( j <- 0 to 2) { print(" " + myMatrix(i)(j)); } println(); } } }
上記のコードの実装、出力は次のようになります。
$ scalac Test.scala $ scala Test 0 1 2 0 1 2 0 1 2
配列をマージ
以下の例では、我々は二つの配列をマージする連結()メソッドを使用し、連結()メソッドは、複数の配列パラメータを受け付けます。
import Array._ object Test { 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) // 输出所有数组元素 for ( x <- myList3 ) { println( x ) } } }
上記のコードの実装、出力は次のようになります。
$ scalac Test.scala $ scala Test 1.9 2.9 3.4 3.5 8.9 7.9 0.4 1.5
アレイ間隔を作成します
以下の実施例は、我々は、広い範囲内で配列を生成する範囲()メソッドを使用します。 デフォルトでは1のステップで範囲()メソッドの最後のパラメータ:
import Array._ object Test { def main(args: Array[String]) { var myList1 = range(10, 20, 2) var myList2 = range(10,20) // 输出所有数组元素 for ( x <- myList1 ) { print( " " + x ) } println() for ( x <- myList2 ) { print( " " + x ) } } }
上記のコードの実装、出力は次のようになります。
$ scalac Test.scala $ scala Test 10 12 14 16 18 10 11 12 13 14 15 16 17 18 19
Scalaの配列方法
我々は輸入Array._導入パッケージを使用する必要があり、それを使用する前に、次の表では、処理言語Scalaの配列のための重要な方法です。
いいえ。 | メソッドと説明 |
---|---|
1 | デフ適用されます(X:T、XS :Tの*):配列[T] 指定されたオブジェクトTの配列を作成し、Tの値は、ブール・ユニット、ダブル、フロート、ロング、INT、シャア、ショート、バイトであってもよいです。 |
2 | デフCONCAT [T](XSS:配列[T] *):配列[T] 配列をマージ |
3 | デフコピー(SRC:AnyRef、srcPos :INT、DEST:AnyRef、destPos:INT、長さ:INT):ユニットを 別の配列にコピー配列。 JavaのSystem.arraycopyの(SRC、srcPos、DEST、destPos、長さ)に相当します。 |
4 | defの空[T]:配列[ T] 長さが0の配列である返します |
5 | defを反復[T](開始: T、LEN:int)を(F:(T)=> T):配列[T] 配列の各要素は、指定された関数の戻り値で、配列の長さを返します。 0の上の配列の初期値と関数A => A + 1を計算するための3の長さの例: scala> Array.iterate(0,3)(a=>a+1) res1: Array[Int] = Array(0, 1, 2) |
6 | defを埋める[T](nは: INT)(elemは:=> T):配列[T] 配列を返し、最初のパラメータが指定され、第二引数の各要素は、長さを埋めるために。 |
7 | defを埋める[T](N1: INT、N2:INT)(elemは:=> T):配列[配列[T]] 二つの配列を返し、最初のパラメータが指定され、第二引数の各要素は、長さを埋めるために。 |
8 | デフofDim [T](N1: INT):配列[T] 指定した長さの配列を作成します。 |
9 | デフofDim [T](N1: INT、N2:INT):配列[配列[T]] 2次元配列を作成します。 |
10 | デフofDim [T](N1: INT、N2:INT、N3:INT):配列[配列[配列[T]]] 3次元配列を作成します。 |
11 | デフ範囲(開始:INT、エンド :INT、ステップ:INT):配列を[INT] 、各要素間の段差増分を指定した範囲内の配列を作成します。 |
12 | デフ範囲(開始:INT、エンド :INT):配列を[INT] 指定された範囲内の配列を作成します。 |
13 | defの集計[T](nは: INT)(F:(INT)=> T):配列[T] デフォルトでは、ゼロから、各配列要素が指定した関数の戻り値で、配列の長さを返します。 上記の例は、3つの要素を返します。 scala> Array.tabulate(3)(a => a + 5) res0: Array[Int] = Array(5, 6, 7) |
14 | defの集計[T](N1: INT、N2:INT)(F:(整数、整数)=> T):配列[配列[T]] 指定された長さの2次元配列を返し、各配列要素は、デフォルトでは、ゼロから、指定された関数の戻り値です。 |