English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

数组 Scala

El array proporcionado por el lenguaje Scala se utiliza para almacenar elementos de tipo homogéneo de tamaño fijo, el array es una de las estructuras de datos importantes para cada lenguaje de programación.

La declaración de variables de array no es declarar number0, number1、...、number99 No se declaran variables individuales, sino que se declara una variable como numbers, luego se utiliza numbers[0]、numbers[1]、...、numbers[99] para representar variables individuales. Un elemento específico del array se accede mediante un índice.

El índice del primer elemento del array es 0, el índice del último elemento es el número total de elementos menos1。

Declaración de array

A continuación, se muestra el formato de sintaxis de declaración de array de Scala:

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

En la sintaxis anterior, z declara un array de tipo de cadena, la longitud del array es 3 ,puede almacenar 3 elementos. Podemos asignar un valor a cada elemento y acceder a cada elemento mediante un índice, como se muestra a continuación:

z(0) = "w3codebox"; z(1) = "Baidu"; z(4/2) = "Baidu"; z(

) = "Google" 4/2 Como índice, es similar a z(2) = "Google"

También podemos definir un array de la siguiente manera:

var z = Array("w3codebox", "Baidu", "Google")

La siguiente imagen muestra un array de longitud 10 del array myList, índice de 0 a 9:

Procesar el array

El tipo de elemento del array y el tamaño del array están determinados, por lo que cuando se procesan elementos de array, generalmente se utiliza un bucle for básico.

A continuación se muestra un ejemplo de creación, inicialización y otros procesos de tratamiento de arrays:

object Test {
   def main(args: Array[String]) {
      var myList = Array(1.9, 2.9, 3.4, 3.5)
      
      // Imprime todos los elementos del array
      for ( x <- myList ) {
         println( x )
      }
      // Calcular la suma total de todos los elementos del array
      var total = 0.0;
      for ( i <- 0 to (myList.length - 1)) {
         total += myList(i);
      }
      println("La suma total es " + total);
      // Buscar el elemento máximo del array
      var max = myList(0);
      for ( i <- 1 to (myList.length - 1) ) {
         if (myList(i) > max) max = myList(i);
      }
      println("El valor máximo es " + max);
    
   }
}

Ejecuta el código anterior, el resultado de salida es:

$ scalac Test.scala
$ scala Test
1.9
2.9
3.4
3.5
La suma total es 11.7
El valor máximo es 3.5

Matrices multidimensionales

Las matrices multidimensionales pueden contener otro array como valor, y los valores de otro array también pueden ser un array. La matriz y la tabla son matrices bidimensionales comunes.

A continuación se muestra un ejemplo de definición de una matriz bidimensional:

val myMatrix = Array.ofDim[Int](3, 3)

En el ejemplo, los elementos del array contienen tres elementos de array, y cada elemento de array contiene tres valores.

A continuación, veamos un ejemplo completo de procesamiento de matrices bidimensionales:

import Array._
object Test {
   def main(args: Array[String]) {
      val myMatrix = Array.ofDim[Int](3, 3)
      
      // Crear la matriz
      for (i <- 0 to 2) {
         for ( j <- 0 to 2) {
            myMatrix(i)(j) = j;
         }
      }
      
      // imprimir la matriz bidimensional
      for (i <- 0 to 2) {
         for ( j <- 0 to 2) {
            print(" " + myMatrix(i)(j));
         }
         println();
      }
    
   }
}

Ejecuta el código anterior, el resultado de salida es:

$ scalac Test.scala
$ scala Test
0 1 2
0 1 2
0 1 2

Combina arrays

En el siguiente ejemplo, utilizamos el método concat() para combinar dos matrices, el método concat() acepta múltiples parámetros de matrices:

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)
      
      // Imprime todos los elementos del array
      for ( x <- myList3 ) {
         println( x )
      }
   }
}

Ejecuta el código anterior, el resultado de salida es:

$ scalac Test.scala
$ scala Test
1.9
2.9
3.4
3.5
8.9
7.9
0.4
1.5

Crea un array de rango

En el siguiente ejemplo, hemos utilizado el método range() para generar un array en un rango específico. El último parámetro del método range() es el paso, que por defecto es 1:

import Array._
object Test {
   def main(args: Array[String]) {
      var myList1 = range(10, 20, 2)
      var myList2 = range(10,20)
      // Imprime todos los elementos del array
      for ( x <- myList1 ) {
         print( " " + x )
      }
      println()
      for ( x <- myList2 ) {
         print( " " + x )
      }
   }
}

Ejecuta el código anterior, el resultado de salida es:

$ scalac Test.scala
$ scala Test
10 12 14 16 18
10 11 12 13 14 15 16 17 18 19

Métodos de array de Scala

La tabla siguiente muestra los métodos importantes para manejar arrays en Scala, que debemos usar antes de ellos import Array._ Introduce el paquete.

Número de serieMétodos y descripciones
1

def apply( x: T, xs: T* ): Array[T]

Crea un array de objetos especificados T,  el valor de T puede ser Unit, Double, Float, Long, Int, Char, Short, Byte, Boolean.

2

def concat[T]( xss: Array[T]* ): Array[T]

Combina arrays

3

def copy( src: AnyRef, srcPos: Int, dest: AnyRef, destPos: Int, length: Int ): Unit

Copia un array a otro array. equivalente a Java's System.arraycopy(src, srcPos, dest, destPos, length).

4

def empty[T]: Array[T]

Devuelve un array de longitud 0

5

def iterate[T]( start: T, len: Int )( f: (T) => T ): Array[T]

Devuelve un array de longitud especificada, donde cada elemento es el valor devuelto por la función especificada.

El valor inicial del array en el ejemplo anterior es 0, y la longitud es 3,计算函数为a=>a+1

scala> Array.iterate(0,3)(a=>a+1)
res1: Array[Int] = Array(0, 1, 2)
6

def fill[T]( n: Int )(elem: =>  T): Array[T]

Devuelve un array de longitud especificada por el primer parámetro, llenando cada elemento con el segundo parámetro.

7

def fill[T]( n1: Int, n2: Int )( elem: => T ): Array[Array[T]]

: Int )( elem: => T ): Array[Array[T]]

8

def ofDim[T]( n1Crear un array de longitud especificada

: Int ): Array[T]

9

def ofDim[T]( n1: Int, n2Crear un array bidimensional

: Int ): Array[Array[T]]

10

def ofDim[T]( n1: Int, n2: Int, n3: Int ): Array[Array[Array[T]]]

Crear un array tridimensional

11

def range( start: Int, end: Int, step: Int ): Array[Int]

Crear un array en un rango específico, step es el paso entre cada elemento

12

def range( start: Int, end: Int ): Array[Int]

Crear un array en un rango específico

13

def tabulate[T]( n: Int )(f: (Int) => T): Array[T]

Devolver un array de longitud especificada, cada elemento del array es el valor de retorno de la función especificada, el valor predeterminado comienza en 0.

El ejemplo anterior devuelve 3 elementos:

scala> Array.tabulate(3)(a => a + 5)
res0: Array[Int] = Array(5, 6, 7)
14

def tabulate[T]( n1: Int, n2: Int )( f: (Int, Int ) => T): Array[Array[T]]

Devolver un array bidimensional de longitud especificada, cada elemento del array es el valor de retorno de la función especificada, el valor predeterminado comienza en 0.