Lista Scala (lista)
Lista Scala (lista)
lista Scala é semelhante a uma matriz, que são do mesmo tipo de todos os elementos, mas que são diferentes: A lista é imutável, o valor não pode ser alterado uma vez que eles são definidos, seguida por uma lista com estrutura recursiva (isto é, a estrutura da tabela de ligação) e uma matriz Não. .
tipo de elemento T pode ser escrito como uma lista de Lista [T]. Por exemplo, a seguir está uma lista de vários tipos:
// 字符串列表 val site: List[String] = List("w3big", "Google", "Baidu") // 整型列表 val nums: List[Int] = List(1, 2, 3, 4) // 空列表 val empty: List[Nothing] = List() // 二维列表 val dim: List[List[Int]] = List( List(1, 0, 0), List(0, 1, 0), List(0, 0, 1) )
Dois estrutura de unidade básica da lista éNil e ::
Nil também pode ser expressa como uma lista vazia.
Nós podemos escrever os exemplos acima são as seguintes:
// 字符串列表 val site = "w3big" :: ("Google" :: ("Baidu" :: Nil)) // 整型列表 val nums = 1 :: (2 :: (3 :: (4 :: Nil))) // 空列表 val empty = Nil // 二维列表 val dim = (1 :: (0 :: (0 :: Nil))) :: (0 :: (1 :: (0 :: Nil))) :: (0 :: (0 :: (1 :: Nil))) :: Nil
Lista de operação básico
lista Scala tem três operações básicas:
-
head
retorna o primeiro elemento da lista -
tail
retorna uma lista que contém, para além dos outros elementos do primeiro elemento -
isEmpty
retorna true se a lista estiver vazia
Para lista Scala qualquer operação pode ser usado para expressar as três operações básicas. Exemplos são os seguintes:
object Test { def main(args: Array[String]) { val site = "w3big" :: ("Google" :: ("Baidu" :: Nil)) val nums = Nil println( "第一网站是 : " + site.head ) println( "最后一个网站是 : " + site.tail ) println( "查看列表 site 是否为空 : " + site.isEmpty ) println( "查看 nums 是否为空 : " + nums.isEmpty ) } }
Implementação do código acima, a saída é:
$ vim Test.scala $ scala Test.scala 第一网站是 : w3big 最后一个网站是 : List(Google, Baidu) 查看列表 site 是否为空 : false 查看 nums 是否为空 : true
Lista Connection
Você pode usar o::: operador ou List. :: :()MétodoList.concat ()Método ou para ligar duas ou mais listas. Exemplos são os seguintes:
object Test { def main(args: Array[String]) { val site1 = "w3big" :: ("Google" :: ("Baidu" :: Nil)) val site2 = "Facebook" :: ("Taobao" :: Nil) // 使用 ::: 运算符 var fruit = site1 ::: site2 println( "site1 ::: site2 : " + fruit ) // 使用 Set.:::() 方法 fruit = site1.:::(site2) println( "site1.:::(site2) : " + fruit ) // 使用 concat 方法 fruit = List.concat(site1, site2) println( "List.concat(site1, site2) : " + fruit ) } }
Implementação do código acima, a saída é:
$ vim Test.scala $ scala Test.scala site1 ::: site2 : List(w3big, Google, Baidu, Facebook, Taobao) site1.:::(site2) : List(Facebook, Taobao, w3big, Google, Baidu) List.concat(site1, site2) : List(w3big, Google, Baidu, Facebook, Taobao)
List.fill ()
Podemos usar o método List.fill () para criar um determinado número de repetições de uma lista de elementos:
object Test { def main(args: Array[String]) { val site = List.fill(3)("w3big") // 重复 w3big 3次 println( "site : " + site ) val num = List.fill(10)(2) // 重复元素 2, 10 次 println( "num : " + num ) } }
Implementação do código acima, a saída é:
$ vim Test.scala $ scala Test.scala site : List(w3big, w3big, w3big) num : List(2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
List.tabulate ()
List.tabulate () é usado para criar a lista, a função dada.
O primeiro argumento é o número de elementos, que podem ser bi-dimensional, o segundo parâmetro para a função especificada, calcula-se os resultados por especificando a função e devolve o valor inserido na lista, o valor inicial é 0, os exemplos são os seguintes:object Test { def main(args: Array[String]) { // 通过给定的函数创建 5 个元素 val squares = List.tabulate(6)(n => n * n) println( "一维 : " + squares ) // 创建二维列表 val mul = List.tabulate( 4,5 )( _ * _ ) println( "多维 : " + mul ) } }
Implementação do código acima, a saída é:
$ vim Test.scala $ scala Test.scala 一维 : List(0, 1, 4, 9, 16, 25) 多维 : List(List(0, 0, 0, 0, 0), List(0, 1, 2, 3, 4), List(0, 2, 4, 6, 8), List(0, 3, 6, 9, 12))
List.reverse
List.reverse sequência para arquivo invertido, os exemplos são os seguintes:
object Test { def main(args: Array[String]) { val site = "w3big" :: ("Google" :: ("Baidu" :: Nil)) println( "site 反转前 : " + site ) println( "site 反转前 : " + site.reverse ) } }
Implementação do código acima, a saída é:
$ vim Test.scala $ scala Test.scala site 反转前 : List(w3big, Google, Baidu) site 反转前 : List(Baidu, Google, w3big)
Lista Scala métodos comuns
A tabela a seguir lista os métodos comuns Lista Scala:
Não. | Método e Descrição |
---|---|
1 | def + :( elem: A): Lista [A] Adicionar à lista de pré-elementos scala> val x = List(1) x: List[Int] = List(1) scala> val y = 2 +: x y: List[Int] = List(2, 1) scala> println(x) List(1) |
2 | def: :( x: A): Lista [A] No início da lista para adicionar elementos |
3 | def :: :( prefixo: Lista [A ]): Lista [A] No início da lista para adicionar o elemento lista especificada |
4 | def: + (elem: A) : Lista [A] Depois de copiar a lista para adicionar elementos. scala> val a = List(1) a: List[Int] = List(1) scala> val b = a :+ 2 b: List[Int] = List(1, 2) scala> println(a) List(1) |
5 | def addString (b: StringBuilder): StringBuilder Adicione todos os elementos da lista para StringBuilder |
6 | addString def (b: StringBuilder, setembro : String): StringBuilder Adicione todos os elementos da lista para StringBuilder, e especificar o delimitador |
7 | def aplicar (n: int): A Obter uma lista de elementos de índice |
8 | def contém (elem: Qualquer): booleano Detectar se a lista contém o elemento especificado |
9 | def copyToArray (xs: Array [A ], começar: Int, len: Int): Unidade Copia os elementos da lista em uma matriz. |
10 | DEF distinta: Lista [A] Remover elementos duplicados da lista, e retorna uma nova lista |
11 | def cair (n: int): Lista [A] Rejeitar os primeiros n elementos, e retorna uma nova lista |
12 | def dropRight (n: int): Lista [A] Descarte os últimos n elementos, e retorna uma nova lista |
13 | DEF dropWhile (p: (A) => booleano): Lista [A] elemento de descarte esquerda para a direita, até que a condição não for satisfeita p |
14 | def endsWith [B] (que: Seq [B]): Boolean Detectar se a lista no fim da sequência especificada |
15 | def equals (que: Qualquer): booleano Determinar se o mesmo |
16 | def existe (p: (A) => Boolean): Boolean Analisando as condições especificadas na lista de elementos existe. G determinar se existe um elemento: scala> l.exists(s => s == "Hah") res7: Boolean = true |
17 | def filtrar (p: (A) => Boolean): Lista [A] Todos os elementos de símbolos de saída especificado condição. O comprimento do elemento de filtro 3: scala> l.filter(s => s.length == 3) res8: List[String] = List(Hah, WOW) |
18 | def forall (p: (A) => Boolean): Boolean Detecção de todos os elementos. Por exemplo: para determinar se todos os elementos de "H" no início: scala> l.forall (s => s.startsWith ( "H")) res10: Boolean = false |
19 | foreach def (f: (A) => Unit): Unidade Todos os elementos da função à lista |
20 | cabeça def: A Obter o primeiro elemento da lista |
21 | def indexOf (elem: A, a partir de : int): int Localizar a posição da primeira ocorrência do elemento a partir do local especificado de |
22 | o init def: Lista [A] Retorna todos os elementos, exceto o último |
23 | DEF cruzam (que: SEQ [A ]): Lista [A] Cálculo de uma pluralidade de conjuntos de intersecção |
24 | def isEmpty: Boolean Detectar se a lista estiver vazia |
25 | def iterator: Iterator [A] Criar um novo iterador para percorrer os elementos |
26 | def última: Um Retorna o último elemento |
27 | def lastIndexOf (elem: A, final : int): int Na posição final, localização especificada começar a procurar a última ocorrência do elemento |
28 | comprimento def: Int Voltar para o comprimento lista |
29 | DEF mapear [B] (f: (A) => B): Lista [B] Através de um determinado método irá recalcular todos os elementos |
30 | def máx: A Localizar o elemento máximo |
31 | min DEF: Um Encontre o menor elemento |
32 | def mkString: String Apresentar uma lista de todos os elementos como uma string |
33 | def mkString (sep: String): Cordas Separadores irá exibir uma lista de todos os elementos como uma string |
34 | def reversa: Lista [A] lista reversa |
35 | DEF ordenada [B>: A] : Lista [A] lista de Triagem |
36 | def startsWith [B] (que: Seq [B], offset: int): Boolean Detectar se a lista contém a sequência especificada no local especificado |
37 | soma def: A Cálculo e recolha de elementos |
38 | tail def: Lista [A] Retorna todos os elementos, exceto o primeiro |
39 | def tomar (n: int): Lista [A] Extraindo os primeiros n elementos da lista |
40 | def takeRight (n: int): Lista [A] n elementos lista extraída |
41 | def toArray: Array [A] Lista para uma matriz |
42 | def toBuffer [B>: A] : Buffer [B] buffer de fundo contém uma lista de todos os elementos |
43 | def toMap [T, U]: Mapa [T, U] Lista convertido Mapa |
44 | def toSeq: Seq [A] Lista converter Seq |
45 | def Toset [B>: A] : Ajuste [B] Set List converso |
46 | toString def (): String Convertida a uma lista de cadeia |
Mais maneiras para se referir a documentação da API