Scala Set (коллекция)
Scala Set (сбор) не повторяется набор объектов, все элементы являются уникальными.
Коллекция Scala делится на переменные и неизменных коллекций.
По умолчанию, Scala , используя неизменяемые коллекции, если вы хотите использовать переменную набора, вам нужно ссылаться на пакетscala.collection.mutable.Set.
Ссылка по умолчанию scala.collection.immutable.Set, неизменное множество примеров являются следующие:
val set = Set(1,2,3) println(set.getClass.getName) // println(set.exists(_ % 2 == 0)) //true println(set.drop(1)) //Set(2,3)
Если вам необходимо использовать переменную коллекции необходимо ввести scala.collection.mutable.Set:
import scala.collection.mutable.Set // 可以在任何地方引入 可变集合 val mutableSet = Set(1,2,3) println(mutableSet.getClass.getName) // scala.collection.mutable.HashSet mutableSet.add(4) mutableSet.remove(1) mutableSet += 5 mutableSet -= 2 println(mutableSet) // Set(5, 3, 4) val another = mutableSet.toSet println(another.getClass.getName) // scala.collection.immutable.Set
Примечание: Хотя переменная и неизменная Set набор добавлять или удалять элементы, но есть очень большая разница.Неизменны операция Set, будет производить новый набор, оригинальный набор не изменился, что то же самое, как список. Работа переменной изменения набора является то, что сам по себе набор, похожий на ListBuffer.
Сбор основных операций
Коллекция Scala имеет три основные операции:
-
head
возвращает первый элемент коллекции -
tail
возвращает коллекцию, содержащую в дополнение к другим элементам первого элемента -
isEmpty
возвращает истину , если коллекция пуста
Любая операция для коллекций Scala могут быть использованы для выражения трех основных операций. Примерами могут служить следующие:
object Test { def main(args: Array[String]) { val site = Set("w3big", "Google", "Baidu") val nums: Set[Int] = Set() println( "第一网站是 : " + site.head ) println( "最后一个网站是 : " + site.tail ) println( "查看列表 site 是否为空 : " + site.isEmpty ) println( "查看 nums 是否为空 : " + nums.isEmpty ) } }
Реализация указанного выше кода, выход:
$ vim Test.scala $ scala Test.scala 第一网站是 : w3big 最后一个网站是 : Set(Google, Baidu) 查看列表 site 是否为空 : false 查看 nums 是否为空 : true
комплект подключений
Вы можете использовать оператор++ или Set.Метод++ ()для подключения двух комплектов. Если есть повторяющиеся элементы будут удалены повторяющиеся элементы. Примерами могут служить следующие:
object Test { def main(args: Array[String]) { val site1 = Set("w3big", "Google", "Baidu") val site2 = Set("Faceboook", "Taobao") // ++ 作为运算符使用 var site = site1 ++ site2 println( "site1 ++ site2 : " + site ) // ++ 作为方法使用 site = site1.++(site2) println( "site1.++(site2) : " + site ) } }
Реализация указанного выше кода, выход:
$ vim Test.scala $ scala Test.scala site1 ++ site2 : Set(Faceboook, Taobao, Google, Baidu, w3big) site1.++(site2) : Set(Faceboook, Taobao, Google, Baidu, w3big)
Найти максимальные и минимальные элементы в коллекции
Вы можете использовать методSet.min найти наименьший элемент в коллекции, используйте Set.maxспособ найти самый большой элемент в коллекции. Примерами могут служить следующие:
object Test { def main(args: Array[String]) { val num = Set(5,6,9,20,30,45) // 查找集合中最大与最小元素 println( "Set(5,6,9,20,30,45) 集合中的最小元素是 : " + num.min ) println( "Set(5,6,9,20,30,45) 集合中的最大元素是 : " + num.max ) } }
Реализация указанного выше кода, выход:
$ vim Test.scala $ scala Test.scala Set(5,6,9,20,30,45) 集合中的最小元素是 : 5 Set(5,6,9,20,30,45) 集合中的最大元素是 : 45
пересечение
Вы можете использовать методSet. & Set.intersectили методы , чтобы увидеть пересечение двух множеств элементов. Примерами могут служить следующие:
object Test { def main(args: Array[String]) { val num1 = Set(5,6,9,20,30,45) val num2 = Set(50,60,9,20,35,55) // 交集 println( "num1.&(num2) : " + num1.&(num2) ) println( "num1.intersect(num2) : " + num1.intersect(num2) ) } }
Реализация указанного выше кода, выход:
$ vim Test.scala $ scala Test.scala num1.&(num2) : Set(20, 9) num1.intersect(num2) : Set(20, 9)
Scala Set распространенный метод
В следующей таблице перечислены Scala Set часто используемые методы:
Нет. | Метод и Описание |
---|---|
1 | Защиту + (элем: A): Установите [A] Добавить новый элемент в сборе, х и создать новую коллекцию, если не существующих элементов |
2 | Защиту - (элем: A): Set [A] Удаление элементов из коллекции, а также создать новую коллекцию |
3 | Защиту содержит (элем: A): Boolean Если элемент присутствует в коллекции, она возвращает истину, в противном случае возвращает ложь. |
4 | Защиту & (что: Set [A ]): Set [A] Возвращает пересечение двух множеств |
5 | Защиту & ~ (что: Set [ A]): Set [A] Возвращает разность множеств двух множеств |
6 | Защиту + (elem1: A, elem2 : A, elems: A *): Установить [A] Добавляя входящие элементы указанной коллекции, чтобы создать новый набор неизменен |
7 | Защиту ++ (elems: A): Set [A] Объединение двух коллекций |
8 | Защиту - (elem1: A, elem2 : A, elems: A *): Установить [A] Удаляя элементы указанной коллекции, переданного создать новый набор неизменен |
9 | Защиту AddString (б: StringBuilder): StringBuilder Добавьте все элементы коллекции к неизменному буфера строки |
10 | Защиту AddString (б: StringBuilder, отд : String): StringBuilder Добавьте все элементы неизменного коллекции в строку буфера, используя указанный разделитель |
11 | Защиту применяются (элем: A) Определение, содержит ли коллекция указанный элемент |
12 | Защиту кол (р: (А) => Boolean): Int Подсчитать количество элементов, которые удовлетворяют установленным критериям, установленным |
13 | Защиту copyToArray (хз: Array [A ], запустите: Int, Len: Int): Unit Скопируйте непреложный элемент коллекции в массив |
14 | Защиту Diff (что: Set [A ]): Set [A] Разница устанавливает сравнения двух наборов |
15 | Защиту падение (п: Int): Установите [A]] Новая коллекция перед тем, возвращающихся выбросе п элементов |
16 | Защиту dropRight (п: Int): Установите [A] Назад отбросить последние п элементов новой коллекции |
17 | Защиту dropWhile (р: (А) => Boolean): Установите [A] Отбросить элемент слева направо, пока условие не выполнено р |
18 | Защиту равно (что: Любой): Boolean равен метод может быть использован в любой последовательности. Для сравнения рядов равны. |
19 | Защиту существует (р: (А) => Boolean): Boolean Анализируя непреложный набор заданных условий элемент существует. |
20 | Защиту фильтр (р: (А) => Boolean): Set [A] Выход отвечает всем указанным критериям неизменные элементы коллекции. |
21 | Защиту найти (р: (А) => Boolean): Опция [A] Обнаружение первого элемента в коллекции неизменного соответствуют установленным критериям |
22 | Защиту FORALL (р: (А) => Boolean): Boolean Найти все элементы неизменного коллекции, которая удовлетворяет заданным критериям |
23 | Защиту Еогеасп (F: (A) => Unit): Unit Функция применяется ко всем элементам коллекции неизменного |
24 | Защиту головка: A Получить первый элемент коллекции неизменного |
25 | Def инициализации: Set [A] Возвращает все элементы, за исключением последнего |
26 | Защиту пересекаются (что: Set [A ]): Set [A] Вычислить пересечение двух множеств |
27 | Защиту IsEmpty: Boolean Определить, является ли пустая коллекция |
28 | Защиту итератора: Итератор [A] Создайте новый итератор для перебора элементов |
29 | Защиту в прошлом: A Возвращает последний элемент |
30 | Защиту карту [B] (F: (A) => B): immutable.Set [B] Через данный метод будет пересчитать все элементы |
31 | Защиту макс: A Найти максимальный элемент |
32 | Защиту мин: A Найти наименьший элемент |
33 | Защиту mkString: String Множество всех элементов дисплея в виде строки |
34 | Защиту mkString (SEP: String): Строка Сепараторы соберет все отображаемые в виде строки элементов |
35 | Защиту продукта: Возвращает неизменный набор чисел в элементах сюжета. |
36 | размер Защиту: Int Возвращает количество элементов в коллекции неизменного |
37 | Защиту splitAt (п: Int): (Set [A], установите [A]) Неизменная коллекция разделяется на два контейнера, первый из первых п элементов, а второй остальными элементами |
38 | Защиту subsetOf (что: Set [A ]): Boolean Если коллекция содержит подмножество возвращает истину, иначе ложь |
39 | Защиту сумма: A Возвращает неизменный набор всех элементов цифровой и |
40 | Защиту Хвост: [A] Возвращает неизменный набор других элементов, в дополнение к первому элементу |
41 | Защиту принять (п: Int): Установите [A] Возвращает первые п элементов |
42 | Защиту takeRight (п: Int): Установите [A] п элементов Назад |
43 | Защиту ToArray: Array [A] Будет преобразован в цифровой коллекции |
44 | Защиту toBuffer [B>: A] : Буфер [B] Назад буфер, содержит все элементы коллекции неизменны |
45 | Защиту ToList: Список [A] Назад Список содержит все элементы коллекции неизменны |
46 | Защиту toMap [T, U]: Карта [T, U] Назад Карта содержит все элементы коллекции неизменны |
47 | Защиту toSeq: Seq [A] Назад Seq, содержит все элементы коллекции неизменны |
48 | Защиту ToString (): String Возвращает строку объекта для представления |
Другие способы , чтобы обратиться к документации по API