Scala Zestaw (kolekcji)
Scala Zestaw (kolekcji) nie powtórzy zbiór przedmiotów, wszystkie elementy są unikatowe.
Kolekcja Scala jest podzielony na zbiorach zmiennych i niezmiennych.
Domyślnie Scala używając zbiory niezmienne, jeśli chcesz użyć zmiennej zestaw, trzeba odwołać pakietscala.collection.mutable.Set.
Scala.collection.immutable.Set domyślny odniesienia, niezmienna zestaw przykładów są następujące:
val set = Set(1,2,3) println(set.getClass.getName) // println(set.exists(_ % 2 == 0)) //true println(set.drop(1)) //Set(2,3)
Jeśli trzeba użyć zbiór zmiennych trzeba wprowadzić 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
Uwaga: Mimo, że zmienne i niezmienne Set Zestaw został dodawać lub usuwać elementy, ale jest to bardzo duża różnica.Stala praca Set, będzie produkować nowy zestaw, oryginalny zestaw nie uległa zmianie, która jest taka sama jak listy. Działanie zmiennej zmiany zestawu jest to, że samo urządzenie, podobnie ListBuffer.
Zbiór podstawowych operacji
Kolekcja Scala ma trzy podstawowe operacje:
-
head
zwraca pierwszy element kolekcji -
tail
zwraca zbiór, który zawiera oprócz innych elementów, pierwszego elementu -
isEmpty
zwraca true, jeśli zbiór jest pusty
Wszelkie operacje na zbiorach Scala 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 = Set("w3big", "Google", "Baidu") val nums: Set[Int] = Set() 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 最后一个网站是 : Set(Google, Baidu) 查看列表 site 是否为空 : false 查看 nums 是否为空 : true
zestaw przyłączeniowy
Można użyć operatora++ lub Ustaw. ++ ()aby podłączyć dwa zestawy. Jeśli istnieją zduplikowane elementy usunie zduplikowane elementy. Przykłady są następujące:
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 ) } }
Realizacja powyższego kodu, wyjście jest:
$ vim Test.scala $ scala Test.scala site1 ++ site2 : Set(Faceboook, Taobao, Google, Baidu, w3big) site1.++(site2) : Set(Faceboook, Taobao, Google, Baidu, w3big)
Znajdź maksymalne i minimalne elementy w kolekcji
Można użyć metodySet.min znaleźć najmniejszy element w kolekcji, należy Set.maxsposób na znalezienie największego elementu w kolekcji. Przykłady są następujące:
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 ) } }
Realizacja powyższego kodu, wyjście jest:
$ vim Test.scala $ scala Test.scala Set(5,6,9,20,30,45) 集合中的最小元素是 : 5 Set(5,6,9,20,30,45) 集合中的最大元素是 : 45
skrzyżowanie
Można użyć metody lub metodUstaw. & Set.intersectzobaczyć przecięcie dwóch zestawów elementów. Przykłady są następujące:
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) ) } }
Realizacja powyższego kodu, wyjście jest:
$ vim Test.scala $ scala Test.scala num1.&(num2) : Set(20, 9) num1.intersect(num2) : Set(20, 9)
Scala Zestaw powszechna metoda
Poniższa tabela zawiera zestaw Scala powszechnie stosowane metody:
Nie. | Sposób i opis |
---|---|
1 | def + (elem: A): Ustaw [A] Dodaj nowy element do kolekcji, X i utworzyć nową kolekcję, chyba istniejących elementów |
2 | def - (elem: A): Ustaw [A] Usuwanie elementów kolekcji i utworzyć nową kolekcję |
3 | def (elem zawiera: A): Boolean Jeśli element jest obecny w kolekcji, to zwraca wartość true, w przeciwnym razie zwraca false. |
4 | def & (tj: Set [A ]): Ustaw [A] Zwraca przecięcie dwóch zestawów |
5 | def & ~ (tj: Set [ A]): Ustaw [A] Zwraca ustawioną różnicę dwóch zestawów |
6 | def + (elem1: A, element2 : A, elems: A *): Ustaw [A] Przez dodanie nadchodzące elementy określonego zbioru w celu utworzenia nowego zestawu niezmienne |
7 | def ++ (elems: A): Ustaw [A] Scalanie dwóch zbiorów |
8 | def - (elem1: A, element2 : A, elems: A *): Ustaw [A] Przez usunięcie elementów upłynięciu określonego zbioru w celu utworzenia nowego zestawu niezmienne |
9 | def addstring (b: StringBuilder): StringBuilder Dodaj wszystkie elementy kolekcji do bufora strun niezmiennej |
10 | addstring def (b: StringBuilder, wrzesień : String): StringBuilder Dodaj wszystkie elementy niezmiennej kolekcji do bufora strun przy użyciu odpowiedniego separatora |
11 | def apply (elem: A) Wykrywanie, czy kolekcja zawiera określony element |
12 | def count (P: (A) => Boolean): int Obliczyć liczbę elementów, które spełnia określone kryteria |
13 | def copyToArray (xs: Array [A ], start: Int, len: int): Unit Kopiowanie niezmienny element pobierający do tablicy |
14 | def diff (tj: Set [A ]): Ustaw [A] Różnica ustawia porównanie dwóch zestawów |
15 | def upuść (n: int): Ustaw [A]] Nowa kolekcja przed powrotem odrzutów n elementów |
16 | def dropRight (n: int): Ustaw [A] Powrót odrzucić ostatnie n elementów nowej kolekcji |
17 | def dropWhile (P: (A) => Boolean): Ustaw [A] Odrzuć elementem lewej do prawej, dopóki warunek nie jest spełniony p |
18 | def równa (czyli: dowolny): Boolean wynosi metoda może być stosowana w dowolnej kolejności. Dla porównania serie są równe. |
19 | def istnieje (P: (A) => Boolean): Boolean Analizując niezmienny zestaw określonych warunków istnieje element. |
20 | def filtrować (P: (A) => Boolean): Set [A] Wyjście spełnia wszystkie określone kryteria niezmienne elementy kolekcji. |
21 | def find (P: (A) => Boolean): Opcja [A] Znalezienie pierwszego elementu w kolekcji niezmiennej spełniać określone kryteria |
22 | def forall (P: (A) => Boolean): Boolean Znajdź wszystkie elementy niezmiennej kolekcji, która spełnia określone kryteria |
23 | foreach def (f (A) => katalogowa): Unit Funkcja ta jest stosowana do wszystkich elementów kolekcji niezmiennej |
24 | Głowica def: a Uzyskaj pierwszy element kolekcji niezmiennej |
25 | def startowych: Ustaw [A] Zwraca wszystkie elementy, z wyjątkiem ostatniego |
26 | def przecinają (tj: Set [A ]): Ustaw [A] Oblicza przecięcie dwóch zestawów |
27 | def isEmpty: Boolean Określić, czy kolekcja jest pusta |
28 | def iterator: Iterator [A] Utwórz nowy iterator iteracyjne elementów |
29 | def ostatnia: a Zwraca ostatni element |
30 | def map [B] (f: (A) => B): immutable.Set [B] Za pomocą danej metody obliczy ponownie wszystkie elementy |
31 | def max: a Znajdź maksymalną elementu |
32 | def min: a Znajdź najmniejszy element |
33 | def mkString: String Zbiór wszystkich elementów wyświetlacza jako ciąg |
34 | def mkString (wrzesień: String): String Separatory zgromadzi wszystkie elementy wyświetlane jako ciąg |
35 | Produkt def: a Zwraca niezmienny zbiór liczb w elementach fabuły. |
36 | Wielkość def: Int Zwraca liczbę elementów w kolekcji niezmiennej |
37 | def splitAt (n: int): (Set [A], ustaw [A]) Zbiór niezmienna jest podzielona na dwie pojemnikach, najpierw przez pierwsze elementy N, a drugi przez pozostałymi elementami |
38 | def subsetOf (tj: Set [A ]): Boolean Jeśli kolekcja zawiera podzbiór zwraca true, false w przeciwnym wypadku |
39 | Suma def: a Zwraca niezmienny zbiór wszystkich elementów cyfrowych oraz |
40 | def OGON: [A] Zwraca niezmienny zestawu innych elementów, oprócz pierwszego elementu |
41 | def podjąć (n: int): Ustaw [A] Zwraca n pierwszych elementów |
42 | def takeRight (n: int): Ustaw [A] n elementów Powrót |
43 | def toArray: Array [A] Zostanie przekonwertowany do cyfrowej kolekcji |
44 | def toBuffer [b>: A] : Bufor [B] Bufor Back, zawiera wszystkie elementy kolekcji niezmienne |
45 | def ToList: Lista [A] Powrót Lista zawiera wszystkie elementy kolekcji niezmienne |
46 | def toMap [T, U]: mapa [T, U] Powrót Mapa, zawiera wszystkie elementy kolekcji niezmienne |
47 | def toSeq: seq [A] Powrót sekwencji, zawiera wszystkie elementy kolekcji niezmienne |
48 | def toString (): String Zwraca ciąg do obiektu do reprezentowania |
Więcej sposobów, aby odnieść się do dokumentacji API