Latest web development tutorials

Scala List (lista)

Scala List (lista)

zbiory Scala zbiory Scala

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

zbiory Scala zbiory Scala