Latest web development tutorials

Scala List (список)

Scala List (список)

коллекции Scala коллекции Scala

Список Scala похож на массив, то они имеют одинаковый тип всех элементов, но они различны: Список неизменна, значение не может быть изменено, как только они будут определены, после чего следует список с рекурсивной структурой (то есть, структура таблицы ссылка) и массив Нет. ,

Элемент типа T может быть записана в виде списка List [T]. Например, ниже показано список различных типов:

// 字符串列表
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)
   )

Два базового блока структура спискаNil и ::

Ноль также можно выразить в виде пустого списка.

Мы можем написать приведенные выше примеры являются следующие:

// 字符串列表
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

Список основные принципы работы

Список Scala имеет три основные операции:

  • head возвращает первый элемент списка
  • tail возвращает список, содержащий в дополнение к другим элементам первого элемента
  • isEmpty возвращает истину , если список пуст

Для получения списка Scala любая операция может быть использована, чтобы выразить три основные операции. Примерами могут служить следующие:

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 )
   }
}

Реализация указанного выше кода, выход:

$ vim Test.scala 
$ scala Test.scala 
第一网站是 : w3big
最后一个网站是 : List(Google, Baidu)
查看列表 site 是否为空 : false
查看 nums 是否为空 : true

Список подключений

Вы можете использовать::: оператор или списка. :: :()Метод или методList.concat ()для соединения двух или более списков. Примерами могут служить следующие:

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  )
      

   }
}

Реализация указанного выше кода, выход:

$ 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 ()

Мы можем использовать List.fill () метод, чтобы создать определенное количество повторений списка элементов:

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  )
   }
}

Реализация указанного выше кода, выход:

$ 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 () используется для создания списка по данной функции.

Первым аргументом является число элементов, которые могут быть двумерным, второй параметр для заданной функции, вычислить результаты, указав функцию и возвращает значение, вставленное в списке, то начальное значение равно 0, примеры являются следующие:

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  )
   }
}

Реализация указанного выше кода, выход:

$ 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 последовательность для инвертированного списка, примеры являются следующие:

object Test {
   def main(args: Array[String]) {
      val site = "w3big" :: ("Google" :: ("Baidu" :: Nil))
      println( "site 反转前 : " + site )

      println( "site 反转前 : " + site.reverse )
   }
}

Реализация указанного выше кода, выход:

$ vim Test.scala 
$ scala Test.scala 
site 反转前 : List(w3big, Google, Baidu)
site 反转前 : List(Baidu, Google, w3big)

Scala Список распространенные методы

В следующей таблице перечислены общие методы Scala список:

Нет. Метод и Описание
1

Защиту + :( элем: A): Список [A]

Добавить в список предэлементов

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: :( х: A): Список [A]

В начале списка для добавления элементов

3

Защиту :: :( Приставка: Список [A ]): Список [A]

В начале списка, чтобы добавить указанный элемент списка

4

Def: + (элем: A) : Список [A]

После копирования списка для добавления элементов.

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

Защиту AddString (б: StringBuilder): StringBuilder

Добавьте все элементы списка к StringBuilder

6

Защиту AddString (б: StringBuilder, отд : String): StringBuilder

Добавьте все элементы списка к StringBuilder, и указать разделитель

7

Защиту применяются (п: Int):

Получить список элементов по индексу

8

Защиту содержит (элем: Any): Boolean

Определение того, содержит ли список указанного элемента

9

Защиту copyToArray (хз: Array [A ], запустите: Int, Len: Int): Unit

Копирует элементы списка в массив.

10

Защиту различны: Список [A]

Удаление повторяющихся элементов списка и возвращает новый список

11

Защиту падение (п: Int): Список [A]

Выбросьте первые п элементов, и возвращает новый список

12

Защиту dropRight (п: Int): Список [A]

Откажитесь последние п элементов, и возвращает новый список

13

Защиту dropWhile (р: (А) => Boolean): Список [A]

Отбросить элемент слева направо, пока условие не выполнено р

14

Защиту EndsWith [B] (что: Seq [B]): булева

Детектирование ли в списке в конце указанной последовательности

15

Защиту равно (что: Любой): Boolean

Определить, является ли то же самое

16

Защиту существует (р: (А) => Boolean): Boolean

Анализируя условия, указанные в списке элементов существует.

L определить, есть ли элемент:

scala> l.exists(s => s == "Hah")
res7: Boolean = true
17

Защиту фильтр (р: (А) => Boolean): Список [A]

Все элементы выходных символов заданное условие.

Длина фильтрующего элемента 3:

scala> l.filter(s => s.length == 3)
res8: List[String] = List(Hah, WOW)
18

Защиту FORALL (р: (А) => Boolean): Boolean

Обнаружение всех элементов.

Например, чтобы определить, все ли элементы "H" в начале:

Скала> l.forall (s => s.startsWith ( "H")) res10: Boolean = False
19

Защиту Еогеасп (F: (A) => Unit): Unit

Все элементы функции к списку

20

Защиту головка: A

Получить первый элемент списка

21

Защиту IndexOf (элем: A, из : Int): Int

Найти местоположение первого вхождения элемента из указанного места из

22

Защиту INIT: Список [A]

Возвращает все элементы, за исключением последнего

23

Защиту пересекаются (что: Seq [A ]): Список [A]

Вычисляют множество пересечения множеств

24

Защиту IsEmpty: Boolean

Детектирование ли список пуст

25

Защиту итератора: Итератор [A]

Создайте новый итератор для перебора элементов

26

Защиту в прошлом: A

Возвращает последний элемент

27

Защиту LastIndexOf (элем: A, конец : Int): Int

На месте, указанном конечном положении начинают искать последнего вхождения элемента

28

Длина Защиту: Int

Назад к длине списка

29

Защиту карту [B] (F: (А) => В): Список [B]

Через данный метод будет пересчитать все элементы

30

Защиту макс: A

Найти максимальный элемент

31

Защиту мин: A

Найти наименьший элемент

32

Защиту mkString: String

Отображение списка всех элементов в виде строки

33

Защиту mkString (SEP: String): Строка

Сепараторы отобразит список всех элементов, как строка

34

Защиту обратное: Список [A]

Обратный список

35

Защиту отсортированный [B>: A] : Список [A]

сортировка списка

36

Защиту StartsWith [B] (что: Seq [B], смещение: Int): Boolean

Определение того, содержит ли список указанной последовательности в указанном месте

37

Защиту сумма: A

Расчет и совокупность элементов

38

Защиту хвост: Список [A]

Возвращает все элементы, кроме первого

39

Защиту принять (п: Int): Список [A]

Извлечение первых п элементов списка

40

Защиту takeRight (п: Int): Список [A]

п элементов извлекается список

41

Защиту ToArray: Array [A]

Список на массив

42

Защиту toBuffer [B>: A] : Буфер [B]

Вторичный буфер содержит список всех элементов

43

Защиту toMap [T, U]: Карта [T, U]

Список конвертированы Карта

44

Защиту toSeq: Seq [A]

Список конвертировать Seq

45

Защиту toSet [B>: A] : Set [B]

Список новообращенный Set

46

Защиту ToString (): String

Конвертируется в список строк

Другие способы , чтобы обратиться к документации по API

коллекции Scala коллекции Scala