Scala-Set (Sammlung)
Scala-Set (Sammlung) ist eine Sammlung von Objekten nicht wiederholt, sind alle Elemente einzigartig.
Scala Kollektion wird in variable und unveränderlich Sammlungen aufgeteilt.
Standardmäßig Scala unveränderlich Sammlungen verwenden, wenn Sie die Variable Satz verwenden wollen, müssen Siescala.collection.mutable.Set Paket zu verweisen.
Der Standardreferenz scala.collection.immutable.Set, unveränderliche Reihe von Beispielen sind wie folgt:
val set = Set(1,2,3) println(set.getClass.getName) // println(set.exists(_ % 2 == 0)) //true println(set.drop(1)) //Set(2,3)
Wenn Sie benötigen eine Variable Sammlung verwenden scala.collection.mutable.Set vorstellen:
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
Hinweis: Obwohl variable und unveränderlich Set Set hat Elemente hinzufügen oder löschen, aber es gibt einen sehr großen Unterschied.Eine unveränderliche Set Operation wird eine neue Reihe produzieren, hat sich die ursprüngliche Menge nicht verändert, was die gleiche wie Liste ist. Der Betrieb des variablen Set Änderung ist, dass das Set selbst, ähnlich wie ListBuffer.
Sammlung von Grundoperationen
Scala Sammlung hat drei grundlegende Operationen:
-
head
liefert das erste Element der Kollektion -
tail
gibt eine Auflistung, die zusätzlich zu den anderen Elementen des ersten Elements enthält -
isEmpty
gibt true zurück , wenn die Sammlung leer ist
Jede Operation für Scala Sammlungen können verwendet werden, um die drei grundlegenden Operationen zum Ausdruck bringen. Beispiele sind wie folgt:
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 ) } }
Die Umsetzung des obigen Codes ist die Ausgabe:
$ vim Test.scala $ scala Test.scala 第一网站是 : w3big 最后一个网站是 : Set(Google, Baidu) 查看列表 site 是否为空 : false 查看 nums 是否为空 : true
Anschluss-Set
Sie können die Operator++ oder Set verwenden. ++ ()Methode zwei Sätze zu verbinden. Wenn es werden doppelte Elemente doppelte Elemente entfernen. Beispiele sind wie folgt:
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 ) } }
Die Umsetzung des obigen Codes ist die Ausgabe:
$ vim Test.scala $ scala Test.scala site1 ++ site2 : Set(Faceboook, Taobao, Google, Baidu, w3big) site1.++(site2) : Set(Faceboook, Taobao, Google, Baidu, w3big)
Finden Sie die maximalen und minimalen Elemente in der Sammlung
Sie könnenSet.min Methode verwenden , das kleinste Element in der Sammlung zu finden, verwenden Sie Set.maxWeise das größte Element in der Sammlung zu finden. Beispiele sind wie folgt:
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 ) } }
Die Umsetzung des obigen Codes ist die Ausgabe:
$ vim Test.scala $ scala Test.scala Set(5,6,9,20,30,45) 集合中的最小元素是 : 5 Set(5,6,9,20,30,45) 集合中的最大元素是 : 45
Kreuzung
Sie können dieSet. & Set.intersectVerfahren oder Methoden verwenden , um die Kreuzung der beiden Gruppen von Elementen zu sehen. Beispiele sind wie folgt:
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) ) } }
Die Umsetzung des obigen Codes ist die Ausgabe:
$ vim Test.scala $ scala Test.scala num1.&(num2) : Set(20, 9) num1.intersect(num2) : Set(20, 9)
Scala Set gängige Methode
Die folgende Tabelle listet die Scala häufigsten verwendeten Methoden:
Nein. | Verfahren und Beschreibung |
---|---|
1 | def + (Elem: A): Stellen Sie [A] Fügen Sie ein neues Element in die Erhebung, x und eine neue Sammlung erstellen, es sei denn, die bestehenden Elemente |
2 | def - (Elem: A): Stellen Sie [A] Entfernen von Elementen aus der Sammlung, und erstellen Sie eine neue Kollektion |
3 | def enthält (Elem: A): Boolean Wenn das Element in der Sammlung ist, gibt es wahr ist, andernfalls false. |
4 | def & (das: Set [A ]): Stellen Sie [A] Gibt den Schnittpunkt von zwei Sätzen |
5 | def & ~ (das: Set [ A]): Stellen Sie [A] Gibt die eingestellte Differenz von zwei Sätzen |
6 | def + (elem1: A, elem2 : A, elems: A *): Stellen Sie [A] Durch die Zugabe von eingehenden Elemente der angegebenen Sammlung einen neuen Satz von unveränderlichen zu erstellen |
7 | def ++ (elems: A): Stellen Sie [A] Zusammenführen von zwei Sammlungen |
8 | def - (elem1: A, elem2 : A, elems: A *): Stellen Sie [A] Durch das Entfernen geleitet, um die Elemente der angegebenen Sammlung einen neuen Satz von unveränderlichen zu erstellen |
9 | def addString (b: String): String Fügen Sie alle Elemente der Kollektion mit dem unveränderlichen String-Puffer |
10 | def addString (b: Stringbuilder, sep : String): String Fügen Sie alle Elemente einer unveränderlichen Sammlung in einen String-Puffer, dem angegebenen Trennzeichen verwenden |
11 | def gelten (Elem: A) Nachweis, ob die Sammlung das angegebene Element enthält |
12 | zählen def (p: (A) => Boolean): Int Berechnen Sie die Anzahl der Elemente, die die angegebenen Kriterien erfüllen gesetzt |
13 | def copyToArray (xs: Array [A ], Beginn: Int, len: Int): Einheit Kopieren Sie unveränderliche Sammelelement in ein Array |
14 | def diff (das: Set [A ]): Stellen Sie [A] Differenz setzt zwei Sätze zu vergleichen |
15 | Drop - def (n: int):Stellen Sie [A]] Die neue Kollektion vor der Rückkehr verwirft n Elemente |
16 | def dropRight (n: int): Stellen Sie [A] Zurück verwerfen die letzten n Elemente der neuen Kollektion |
17 | def dropWhile (p: (A) => Boolean): Stellen Sie [A] Verwerfen Element links nach rechts, bis die Bedingung nicht erfüllt p |
18 | def entspricht (also: Any): Boolean gleich Methode kann in beliebiger Reihenfolge verwendet werden. Für die Reihe zu vergleichen sind gleich. |
19 | def existiert (p: (A) => Boolean): Boolean Analyse unveränderlichen Satz der Bedingungen angegebene Element existiert. |
20 | Filter def (p: (A) => Boolean): Stellen Sie [A] Output erfüllt alle festgelegten Kriterien unveränderlich Kollektion Elemente. |
21 | finden def (p: (A) => Boolean): Option [A] Finden Sie das erste Element in der Sammlung unveränderlich treffen die angegebenen Kriterien |
22 | def forall (p: (A) => Boolean): Boolean Finden Sie alle Elemente einer unveränderlichen Sammlung, die die angegebenen Kriterien erfüllt |
23 | def foreach (f: (A) => Unit): Einheit Die Funktion wird auf alle Elemente der unveränderlichen Sammlung angewendet |
24 | def Kopf: A Holen Sie sich das erste Element der Sammlung unveränderlich |
25 | def init: Stellen Sie [A] Gibt alle Elemente, mit Ausnahme des letzten |
26 | schneiden def (dh: Set [A ]): Stellen Sie [A] Berechnen Sie den Schnittpunkt von zwei Sätzen |
27 | def isEmpty: Boolean Bestimmen Sie, ob die Sammlung leer ist |
28 | def Iterator: Iterator [A] Erstellen Sie einen neuen Iterator um die Elemente zu iterieren |
29 | def letzte: A Gibt das letzte Element |
30 | map def [B] (f: (A) => B): immutable.Set [B] Durch eine bestimmte Methode wird neu berechnet werden alle Elemente |
31 | def max: A Finden Sie die maximale Element |
32 | def min: A Finden Sie das kleinste Element |
33 | def mkString: String Die Menge aller Elemente des Displays als String |
34 | def mkString (September: String): String Separatoren werden alle Elemente zusammenbringen, als String angezeigt |
35 | def Produkt: Gibt eine unveränderliche Menge von Zahlen in den Handlungselemente. |
36 | def Größe: Int Gibt die Anzahl der Elemente in der Sammlung unveränderlichen |
37 | def splitAt (n: int): (Set [A], Set [A]) Die unveränderliche Sammlung ist in zwei Behälter aufgeteilt, wobei der erste durch die ersten n Elemente, und die zweite von den übrigen Elemente |
38 | def subsetOf (das: Set [A ]): Boolean Wenn die Sammlung eine Teilmenge enthält liefert true, sonst false |
39 | def Summe: A Gibt eine unveränderliche Menge aller Elemente des digitalen und |
40 | def Rute: [A] Gibt eine unveränderliche Menge anderer Elemente zusätzlich zu dem ersten Element |
41 | nehmen def (n: int): Stellen Sie [A] Gibt die ersten n Elemente |
42 | def takeRight (n: int): Stellen Sie [A] n Elemente Zurück |
43 | def toArray: Array [A] Wird an eine digitale Sammlung umgewandelt werden |
44 | def toBuffer [B>: A] : Puffer [B] Zurück Puffer, enthält alle Elemente aus einer Sammlung von unveränderlichen |
45 | def ToList: Liste [A] Zurück Liste enthält alle Elemente aus einer Sammlung von unveränderlichen |
46 | def toMap [T, U]: Map [T, U] Zurück Karte, enthält alle Elemente aus einer Sammlung von unveränderlichen |
47 | def toSeq: Seq [A] Zurück Seq, enthält alle Elemente aus einer Sammlung von unveränderlichen |
48 | def toString (): String Gibt einen String-Objekt zu repräsentieren |
Weitere Möglichkeiten , um zu verweisen der API - Dokumentation