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

Arrays do Scala

Os arrays fornecidos pelo idioma Scala são usados para armazenar elementos do mesmo tipo de tamanho fixo e são uma das estruturas de dados importantes para cada linguagem de programação de editor.

A declaração de variável de array não é a declaração de number0, number1、...、number99 Não é declarado um array de variáveis individuais, mas é declarado uma variável como numbers, e então é usado numbers[0]、numbers[1]、...、numbers[99] para representar variáveis individuais. Um elemento específico do array pode ser acessado através do índice.

O índice do primeiro elemento do array é 0, e o índice do último elemento é a diferença do número total de elementos.1。

Declarar array

Aqui está o formato de declaração de array do Scala:

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

Neste gramado, a declaração z define um array de tipo de string, cujo comprimento é 3 ,pode armazenar 3 de elementos. Podemos definir valores para cada elemento e acessar cada elemento pelo índice, conforme mostrado a seguir:

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

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

Também podemos definir um array da seguinte forma:

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

A figura a seguir mostra um array de comprimento 10 do array myList, índice de 0 até 9:

Processar arrays

Os tipos de elementos do array e o tamanho do array são determinados, então quando se processa elementos do array, geralmente usamos loops básicos.

O exemplo a seguir demonstra o processo de criação, inicialização e processamento de arrays:

object Test {
   def main(args: Array[String]) {
      var myList = Array(1.9, 2.9, 3.4, 3.5)
      
      // Imprime todos os elementos do array
      for ( x <- myList ) {
         println( x )
      }
      // Calcular a soma de todos os elementos do array
      var total = 0.0;
      for ( i <- 0 to (myList.length - 1)) {
         total += myList(i);
      }
      println("A soma total é " + total);
      // Encontrar o elemento máximo do array
      var max = myList(0);
      for ( i <- 1 to (myList.length - 1) ) {
         if (myList(i) > max) max = myList(i);
      }
      println("O valor máximo é " + max);
    
   }
}

Executando o código acima, o resultado é:

$ scalac Test.scala
$ scala Test
1.9
2.9
3.4
3.5
A soma total é 11.7
O valor máximo é 3.5

Arrays multidimensionais

Arrays multidimensionais podem ter valores que são arrays, e os valores de um array podem ser arrays. Matrizes e tabelas são arrays bidimensionais comuns.

Aqui está um exemplo de definição de array bidimensional:

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

No exemplo, o array contém três elementos de array, cada um contém três valores.

Vamos olhar agora um exemplo completo de processamento de array bidimensional:

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

Executando o código acima, o resultado é:

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

Concatena arrays

Neste exemplo, usamos o método concat() para combinar dois arrays, o método concat() aceita múltiplos parâmetros de arrays:

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 os elementos do array
      for ( x <- myList3 ) {
         println( x )
      }
   }
}

Executando o código acima, o resultado é:

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

Cria um array de intervalo

Nos exemplos a seguir, usamos o método range() para gerar um array de intervalo. O último parâmetro do método range() é o passo, que é zero por padrão. 1:

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

Executando o código acima, o resultado é:

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

Métodos de array do Scala

A tabela a seguir lista os métodos importantes para o tratamento de arrays no Scala, que precisamos usar antes de usá-los. import Array._ Introduzindo pacote.

NúmeroMétodos e descrições
1

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

Cria um array com objetos especificados T, onde T pode ser Unit, Double, Float, Long, Int, Char, Short, Byte, Boolean.

2

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

Concatena arrays

3

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

Copia um array para outro array. É equivalente a System.arraycopy(src, srcPos, dest, destPos, length) do Java.

4

def empty[T]: Array[T]

Retorna um array de comprimento 0

5

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

Retorna um array de comprimento especificado, onde cada elemento é o valor retornado pela função especificada.

O exemplo acima tem um array inicializado com 0, com comprimento de 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]

Retorna um array, com comprimento especificado pelo primeiro parâmetro, e cada elemento preenchido com o segundo parâmetro.

7

def fill[T]( n1: Int, n2def fill[T]( n

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

8

def ofDim[T]( n1Retornar um array de comprimento especificado, preenchido com o valor especificado.

: Int ): Array[T]

9

def ofDim[T]( n1: Int, n2Criar um array bidimensional

: Int ): Array[Array[T]]

10

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

Criar um array tridimensional

11

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

Criar um array no intervalo especificado, step é o comprimento entre cada elemento

12

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

Criar um array no intervalo especificado

13

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

Retornar um array de comprimento especificado, onde cada elemento do array é o valor de retorno da função especificada, a contagem padrão começa em 0.

O exemplo acima retorna 3 Número de 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]]

Retornar um array bidimensional de comprimento especificado, onde cada elemento do array é o valor de retorno da função especificada, a contagem padrão começa em 0.