Scala List (lista)
Scala List (lista)
Lista Scala jest podobny do tablicy, są tego samego typu ze wszystkich elementów, ale są one różne: lista jest niezmienna wartość nie może być zmieniony, gdy są one określone, po którym następuje lista ze strukturą rekurencyjną (czyli struktura tabeli Link) i tablicy Nie. ,
Typ Element T mogą być zapisywane w postaci listy listy [T]. Na przykład, następujące pokazuje się lista różnych typów:
// 字符串列表 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) )
Dwie podstawowe struktury jednostki liście jestNil i ::
Zera może być wyrażona jako pusty listy.
Możemy napisać powyższe przykłady są następujące:
// 字符串列表 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 podstawowe Eksploatacja
Lista Scala ma trzy podstawowe operacje:
-
head
zwraca pierwszy element listy -
tail
powraca do listy, która zawiera oprócz innych elementów pierwszego elementu -
isEmpty
zwraca true, jeśli lista jest pusta
Na liście Scala wszelkie operacje mogą być używane do wyrażenia trzy podstawowe operacje. Przykłady są następujące:
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 ) } }
Realizacja powyższego kodu, wyjście jest:
$ vim Test.scala $ scala Test.scala 第一网站是 : w3big 最后一个网站是 : List(Google, Baidu) 查看列表 site 是否为空 : false 查看 nums 是否为空 : true
Lista Connection
Można użyć::: operatora lub Lista. :: :()metoda lub metodyList.concat (),aby połączyć dwie lub więcej list. Przykłady są następujące:
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 ) } }
Realizacja powyższego kodu, wyjście jest:
$ 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 ()
Możemy użyć List.fill () aby utworzyć określoną liczbę powtórzeń listy elementów:
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 ) } }
Realizacja powyższego kodu, wyjście jest:
$ 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 ()
Metoda List.tabulate () służy do tworzenia listy według danej funkcji.
Pierwszym argumentem jest liczba elementów, które mogą być dwuwymiarowy, drugi parametr dla określonej funkcji, możemy obliczyć wyniki poprzez określenie funkcji i zwraca wartość wstawiona do listy, wartość początkowa wynosi 0, przykłady przedstawiają się następująco: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 ) } }
Realizacja powyższego kodu, wyjście jest:
$ 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 sekwencję odwróconego listy przykładów przedstawiają się następująco:
object Test { def main(args: Array[String]) { val site = "w3big" :: ("Google" :: ("Baidu" :: Nil)) println( "site 反转前 : " + site ) println( "site 反转前 : " + site.reverse ) } }
Realizacja powyższego kodu, wyjście jest:
$ vim Test.scala $ scala Test.scala site 反转前 : List(w3big, Google, Baidu) site 反转前 : List(Baidu, Google, w3big)
Lista Scala wspólnych metod
Poniższa tabela zawiera listę typowych metod Lista Scala:
Nie. | Sposób i opis |
---|---|
1 | def + :( elem: A): Lista [A] Dodaj do listy wstępnych elementów 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] Na początku listy, aby dodać elementy |
3 | def :: :( prefix: Lista [A ]): Lista [A] Na początku listy, aby dodać określony element listy |
4 | def: + (elem: A) : Lista [A] Po skopiowaniu listy, aby dodać elementy. 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 Dodaj wszystkie elementy listy do StringBuilder |
6 | addstring def (b: StringBuilder, wrzesień : String): StringBuilder Dodaj wszystkie elementy listy do StringBuilder i określić separator |
7 | def apply (n: int): Pobierz listę elementów przez indeks |
8 | def zawiera (elem: dowolny): Boolean Wykrywanie, czy lista zawiera określony element |
9 | def copyToArray (xs: Array [A ], start: Int, len: int): Unit Kopie elementów listy do tablicy. |
10 | def odrębne: Lista [A] Usuń zduplikowane elementy listy i zwraca nową listę |
11 | def upuść (n: int): Lista [A] Odrzucić pierwsze n elementów i zwraca nową listę |
12 | def dropRight (n: int): Lista [A] Wyrzucić ostatnie n elementów i zwraca nową listę |
13 | def dropWhile (P: (A) => Boolean): Lista [A] Odrzuć elementem lewej do prawej, dopóki warunek nie jest spełniony p |
14 | def endswith [B] (czyli: seq [B]): Boolean Wykrywanie, czy na liście po zakończeniu określonej kolejności |
15 | def równa (czyli: dowolny): Boolean Ustal, czy ten sam |
16 | def istnieje (P: (A) => Boolean): Boolean Analizując warunki określone w wykazie elementów istnieje. L ustalić, czy istnieje element: scala> l.exists(s => s == "Hah") res7: Boolean = true |
17 | def filtrować (P: (A) => Boolean): List [A] Wszystkie elementy symboli wyjściowych określony warunek. Długość elementu filtracyjnego 3: scala> l.filter(s => s.length == 3) res8: List[String] = List(Hah, WOW) |
18 | def forall (P: (A) => Boolean): Boolean Wykrywanie wszystkich elementów. Na przykład: w celu ustalenia, czy wszystkie elementy "h" na początku: scala> l.forall (s => s.startsWith ( "H")) res10: Boolean = false |
19 | foreach def (f (A) => katalogowa): Unit Wszystkie elementy funkcyjne na liście |
20 | Głowica def: a Uzyskaj pierwszy element listy |
21 | def indexOf (elem: A, z : int): int Znaleźć lokalizację wystąpienia pierwszego elementu z określonego miejsca, z |
22 | def startowych: Lista [A] Zwraca wszystkie elementy, z wyjątkiem ostatniego |
23 | def przecinają (to SEQ [A ]): List [A] Obliczanie wielu przecięcie zbiorów |
24 | def isEmpty: Boolean Wykrywanie, czy lista jest pusta |
25 | def iterator: Iterator [A] Utwórz nowy iterator iteracyjne elementów |
26 | def ostatnia: a Zwraca ostatni element |
27 | def lastIndexOf (elem: A, koniec : int): int Na miejscu określonym położeniu końcowym zacząć szukać ostatniego wystąpienia elementu |
28 | Długość def: Int Powrót do długości listy |
29 | def map [B] (f: (A) => B): Lista [B] Za pomocą danej metody obliczy ponownie wszystkie elementy |
30 | def max: a Znajdź maksymalną elementu |
31 | def min: a Znajdź najmniejszy element |
32 | def mkString: String Wyświetla listę wszystkich elementów jako ciąg |
33 | def mkString (wrzesień: String): String Separatory wyświetli listę wszystkich elementów jako ciąg |
34 | def odwrócić: List [A] lista Odwrócona |
35 | def brakowanych [b>: A] : Lista [A] Lista sortowanie |
36 | def startswith [B] (czyli: seq [B], offset: int): Boolean Wykrywanie, czy lista zawiera określonej sekwencji w określonym miejscu |
37 | Suma def: a Obliczanie i zbiór elementów |
38 | def ogon: Lista [A] Zwraca wszystkie elementy, z wyjątkiem pierwszego |
39 | def podjąć (n: int): List [A] Wyodrębnianie pierwszych n elementów z listy |
40 | def takeRight (n: int): Lista [A] n elementów listy ekstrakcji |
41 | def toArray: Array [A] Lista do tablicy |
42 | def toBuffer [b>: A] : Bufor [B] Bufor Powrót zawiera listę wszystkich elementów |
43 | def toMap [T, U]: mapa [T, U] Lista przeliczone na mapie |
44 | def toSeq: seq [A] Lista przekonwertować Seq |
45 | def toset [b>: A] : Ustaw [B] Lista nawrócony Set |
46 | def toString (): String Budynek do listy smyczkową |
Więcej sposobów, aby odnieść się do dokumentacji API