Lista Scala (lista)
Lista Scala (lista)
Lista Scala es similar a una matriz, que son el mismo tipo de todos los elementos, pero son diferentes: La lista es inmutable, el valor no se puede cambiar una vez que se definen, seguido de una lista con estructura recursiva (es decir, la estructura de la tabla de enlace) y una matriz No. .
Tipo de elemento T puede escribirse como una lista de lista de [T]. Por ejemplo, a continuación se muestra una lista de varios 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) )
Dos estructura de unidad básica de la lista esNil y ::
Ninguna también se puede expresar como una lista vacía.
Podemos escribir los ejemplos anteriores son los siguientes:
// 字符串列表 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 funcionamiento básico
Lista Scala tiene tres operaciones básicas:
-
head
devuelve el primer elemento de la lista -
tail
devuelve una lista que contiene, además de los otros elementos del primer elemento -
isEmpty
devuelve verdadero si la lista está vacía
Para la lista Scala cualquier operación se puede utilizar para expresar las tres operaciones básicas. Ejemplos son los siguientes:
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 ) } }
Aplicación del código anterior, la salida es:
$ vim Test.scala $ scala Test.scala 第一网站是 : w3big 最后一个网站是 : List(Google, Baidu) 查看列表 site 是否为空 : false 查看 nums 是否为空 : true
Lista de conexiones
Se puede utilizar el operador::: o Lista. :: :()MétodoList.concat ()Método o para conectar dos o más listas. Ejemplos son los siguientes:
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 ) } }
Aplicación del código anterior, la salida es:
$ 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 utilizar el método List.fill () para crear un número determinado de repeticiones de una 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 ) } }
Aplicación del código anterior, la salida es:
$ 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 ()
método List.tabulate () se utiliza para crear la lista por la función dada.
El primer argumento es el número de elementos, que puede ser de dos dimensiones, el segundo parámetro para la función especificada, que calcular los resultados por la especificación de la función y devuelve el valor insertado en la lista, el valor inicial es 0, los ejemplos son los siguientes: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 ) } }
Aplicación del código anterior, la salida es:
$ 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
secuencia List.reverse para la lista invertida, los ejemplos son los siguientes:
object Test { def main(args: Array[String]) { val site = "w3big" :: ("Google" :: ("Baidu" :: Nil)) println( "site 反转前 : " + site ) println( "site 反转前 : " + site.reverse ) } }
Aplicación del código anterior, la salida es:
$ vim Test.scala $ scala Test.scala site 反转前 : List(w3big, Google, Baidu) site 反转前 : List(Baidu, Google, w3big)
métodos comunes Lista Scala
En la siguiente tabla se enumeran los métodos comunes Lista Scala:
No. | Método y Descripción |
---|---|
1 | def + :( elem: A): Listado [A] Añadir a la lista de pre-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): Listado [A] En el principio de la lista para añadir elementos |
3 | def :: :( prefijo: Listado [A ]): Listado [A] En el principio de la lista para agregar el elemento de lista especificada |
4 | def: + (elem: A) : Listado [A] Después de copiar la lista para añadir 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 Añadir todos los elementos de la lista para StringBuilder |
6 | addString def (b: StringBuilder, septiembre : String): StringBuilder Añadir todos los elementos de la lista para StringBuilder, y especificar el delimitador |
7 | aplicar def (n: Int): Un Obtener una lista de elementos de índice |
8 | def contiene (elem: Cualquier): Boolean Detectar si la lista contiene el elemento especificado |
9 | def copyToArray (xs: Array [A ], iniciar: Int, len: Int): Unidad Copia los elementos de la lista en una matriz. |
10 | def distinta: Listado [A] Eliminar los elementos duplicados de la lista, y devuelve una nueva lista |
11 | def caer (n: Int): Listado [A] Desechar los primeros n elementos, y devuelve una nueva lista |
12 | def dropRight (n: Int): Listado [A] Desechar los últimos n elementos, y devuelve una nueva lista |
13 | def dropWhile (p: (A) => Boolean): Listado [A] elemento de descarte de izquierda a derecha, hasta que la condición no se cumple p |
14 | def endsWith [B] (que: Sec [B]): Boolean La detección de si la lista al final de la secuencia especificada |
15 | def es igual (que: Cualquier): Boolean Determinar si la misma |
16 | def existe (p: (A) => Boolean): Boolean El análisis de las condiciones especificadas en la lista de elementos existe. L a determinar si hay un elemento: scala> l.exists(s => s == "Hah") res7: Boolean = true |
17 | def del filtro (P: (A) => Boolean): Listado [A] Todos los elementos de símbolos de salida especificadas de condiciones. La longitud del elemento de filtro 3: scala> l.filter(s => s.length == 3) res8: List[String] = List(Hah, WOW) |
18 | def forall (p: (A) => Boolean): Boolean La detección de todos los elementos. Por ejemplo: para determinar si todos los elementos de la "H" al principio: Scala> l.forall (s => s.startsWith ( "H")) RES10: Boolean = false |
19 | foreach def (f: (A) => Unidad): Unidad Todos los elementos de la función a la lista |
20 | cabeza def: Un Obtener el primer elemento de la lista |
21 | def indexOf (elem: A, a partir de : int): int Encontrar la ubicación de la primera aparición del elemento de la ubicación especificada de |
22 | def init: Listado [A] Devuelve todos los elementos, excepto el último |
23 | def intersectar (que: Sec [A ]): Listado [A] Cálculo de una pluralidad de la intersección de conjuntos |
24 | def estaVacia: Boolean Detectar si la lista está vacía |
25 | def iterador: Iterator [A] Crear un nuevo iterador para recorrer los elementos |
26 | def última: Un Devuelve el último elemento |
27 | def lastIndexOf (elem: A, final : int): int En la posición final ubicación especificada empezar a buscar la última ocurrencia del elemento |
28 | longitud def: Int Volver a la longitud de la lista |
29 | def mapa [B] (f: (A) => B): Listado [B] A través de un método dado volverá a calcular todos los elementos |
30 | def max: Un Encontrar el elemento máximo |
31 | min def: Un Encontrar el elemento más pequeño |
32 | def mkString: String Mostrar una lista de todos los elementos como una cadena |
33 | def mkString (SEP: String): Cadena Los separadores se mostrará una lista de todos los elementos como una cadena |
34 | def inversa: Listado [A] lista inversa |
35 | def ordenada [B>: A] : Listado [A] Clasificando |
36 | def startsWith [B] (que: Sec [B], offset: int): Boolean Detectar si la lista contiene la secuencia especificada en la ubicación especificada |
37 | def suma: Un Cálculo y colección de elementos |
38 | cola def: Listado [A] Devuelve todos los elementos, excepto el primero |
39 | def tome (n: Int): Listado [A] La extracción de los primeros n elementos de la lista |
40 | def takeRight (n: Int): Listado [A] n elementos de la lista extrajeron |
41 | def toArray: Array [A] Lista a un array |
42 | def toBuffer [B>: A] : Buffer [B] búfer de reserva contiene una lista de todos los elementos |
43 | def tomap [T, T]: Mapa [T, T] Lista convierte Mapa |
44 | def toSeq: SEQ [A] Lista convertir Sec |
45 | def Toset [B>: A] : Ajuste [B] Conjunto lista convertido |
46 | toString def (): String Convertido a una lista de cadenas |
Más formas para referirse a la documentación de la API