Scala List (список)
Scala List (список)
Список 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