Scala Set (collection)
Scala Set (collection) ne se répète pas la collection d'objets, tous les éléments sont uniques.
collection Scala est divisé en collections variables et immuables.
Par défaut, Scala en utilisant les collections immuables, si vous souhaitez utiliser l'ensemble variable, vous devez référencer packagescala.collection.mutable.Set.
Le scala.collection.immutable.Set de référence par défaut, ensemble immuable des exemples sont les suivants:
val set = Set(1,2,3) println(set.getClass.getName) // println(set.exists(_ % 2 == 0)) //true println(set.drop(1)) //Set(2,3)
Si vous avez besoin d'utiliser une collection de variable doivent introduire 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
Note: Bien que variable et immuable Set Set a ajouter ou supprimer des éléments, mais il y a une très grande différence.Une opération Set immuable, va produire une nouvelle série, le jeu original n'a pas changé, ce qui est la même que la liste. L'opération du changement de variable Set est que l'ensemble lui-même, semblable à ListBuffer.
Collection des opérations de base
collection Scala dispose de trois opérations de base:
-
head
renvoie le premier élément de la collection - la
tail
retourne une collection qui contient , en plus des autres éléments du premier élément -
isEmpty
retourne true si la collection est vide
Toute opération pour les collections Scala peut être utilisé pour exprimer les trois opérations de base. Des exemples sont les suivants:
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 ) } }
Mise en œuvre du code ci-dessus, la sortie est:
$ vim Test.scala $ scala Test.scala 第一网站是 : w3big 最后一个网站是 : Set(Google, Baidu) 查看列表 site 是否为空 : false 查看 nums 是否为空 : true
Kit de raccordement
Vous pouvez utiliser l'opérateur++ ou Set. ++ ()Méthode pour connecter deux ensembles. S'il y a des éléments en double seront supprimer les doublons. Des exemples sont les suivants:
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 ) } }
Mise en œuvre du code ci-dessus, la sortie est:
$ vim Test.scala $ scala Test.scala site1 ++ site2 : Set(Faceboook, Taobao, Google, Baidu, w3big) site1.++(site2) : Set(Faceboook, Taobao, Google, Baidu, w3big)
Trouver les éléments de maximum et minimum dans la collection
Vous pouvez utiliser la méthodeSet.min pour trouver le plus petit élément de la collection, utilisez manière Set.maxpour trouver le plus grand élément de la collection. Des exemples sont les suivants:
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 ) } }
Mise en œuvre du code ci-dessus, la sortie est:
$ vim Test.scala $ scala Test.scala Set(5,6,9,20,30,45) 集合中的最小元素是 : 5 Set(5,6,9,20,30,45) 集合中的最大元素是 : 45
intersection
Vous pouvez utiliser la méthode ou les méthodesSet. & Set.intersectpour voir l'intersection des deux ensembles d'éléments. Des exemples sont les suivants:
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) ) } }
Mise en œuvre du code ci-dessus, la sortie est:
$ vim Test.scala $ scala Test.scala num1.&(num2) : Set(20, 9) num1.intersect(num2) : Set(20, 9)
Scala Set méthode commune
Le tableau suivant présente l'Ensemble Scala méthodes couramment utilisées:
Non. | Méthode et description |
---|---|
1 | def + (elem: A): Réglez [A] Ajouter un nouvel élément à la collection, x et créer une nouvelle collection, à moins que les éléments existants |
2 | def - (elem: A): Réglez [A] Retrait des éléments de la collection, et de créer une nouvelle collection |
3 | def contient (elem: A): Boolean Si l'élément est présent dans la collection, elle renvoie true, sinon retourne false. |
4 | def et (que: Set [A ]): Réglez [A] Renvoie l'intersection de deux ensembles |
5 | def & ~ (que: Set [ A]): Réglez [A] Renvoie la différence de jeu de deux ensembles |
6 | def + (elem1: A, elem2 : A, elems: A *): Réglez [A] En ajoutant des éléments entrants de la collection spécifiée pour créer un nouvel ensemble de immuable |
7 | def ++ (elems: A): Réglez [A] La fusion de deux collections |
8 | def - (elem1: A, elem2 : A, elems: A *): Set [A] En supprimant les éléments de la collection spécifiée passé pour créer un nouvel ensemble de immuable |
9 | def addString (b: StringBuilder): StringBuilder Ajouter tous les éléments de la collection à la mémoire tampon de chaîne immuable |
10 | def addString (b: StringBuilder, septembre : String): StringBuilder Ajouter tous les éléments d'une collection immuable dans un tampon de chaîne, en utilisant le délimiteur spécifié |
11 | appliquer def (elem: A) Détecter si la collection contient l'élément spécifié |
12 | compter def (p: (A) => Boolean): Int Calculer le nombre d'éléments qui répondent aux critères spécifiés définis |
13 | def copyToArray (xs: Array [A ], lancez: Int, len: Int): Unité Copier élément de collection immuable à un tableau |
14 | def diff (que: Set [A ]): Réglez [A] On compare la différence définit deux jeux |
15 | def drop (n: Int): Réglez [A]] La nouvelle collection avant rejets n éléments de retour |
16 | def dropRight (n: Int): Réglez [A] Retour jeter les n derniers éléments de la nouvelle collection |
17 | def dropWhile (p: (A) => Boolean): Réglez [A] élément Jeter gauche à droite, jusqu'à ce que la condition ne p satisfait |
18 | def est égal à (que: Tout):Boolean est égale à la méthode peut être utilisée dans n'importe quel ordre. Pour comparer la série sont égaux. |
19 | existe def (p: (A) => Boolean): Boolean Analyse ensemble immuable l'élément spécifié existe des conditions. |
20 | def filtre (p: (A) => Boolean): Réglez [A] Sortie répond à tous les critères spécifiés éléments de collecte immuables. |
21 | trouver def (p: (A) => Boolean): Option [A] Trouver le premier élément de la collection se rencontrent immuable les critères spécifiés |
22 | def forall (p: (A) => Boolean): Boolean Trouver tous les éléments d'une collection immuable qui répond aux critères spécifiés |
23 | def foreach (f: (A) => Unité): Unité La fonction est appliquée à tous les éléments de la collection immuable |
24 | tête de def: A Obtenez le premier élément de la collection immuable |
25 | def INIT: Réglez [A] Renvoie tous les éléments, sauf le dernier |
26 | intersection def (que: Set [A ]): Réglez [A] Calculer l'intersection de deux ensembles |
27 | def isEmpty: Boolean Déterminer si la collection est vide |
28 | def iterator: Iterator [A] Créer un nouveau iterator pour itérer les éléments |
29 | def dernière: A Retourne le dernier élément |
30 | carte def [B] (f: (A) => B): immutable.Set [B] Grâce à une méthode donnée recalculera tous les éléments |
31 | def max: A Trouver l'élément maximal |
32 | def min: A Trouver le plus petit élément |
33 | def mkString: String L'ensemble de tous les éléments de l'affichage sous forme de chaîne |
34 | def mkString (septembre: String): chaîne Séparateurs réunira tous les éléments affichés sous forme de chaîne |
35 | produit def: A Retourne un ensemble immuable de nombres dans les éléments de l'intrigue. |
36 | Taille du def: Int Retourne le nombre d'éléments dans la collection immuable |
37 | def splitAt (n: Int): (Set [A], Set [A]) La collection immuable est divisée en deux récipients, le premier par les premiers n éléments, et le second par les éléments restants |
38 | def subsetOf (que: Set [A ]): Boolean Si la collection contient un sous-ensemble renvoie true, sinon false |
39 | def somme: A Retourne un ensemble immuable de tous les éléments du numérique et |
40 | def queue: Réglez [A] Retourne un ensemble immuable d'autres éléments en plus du premier élément |
41 | prendre def (n: Int): Réglez [A] Renvoie les n premiers éléments |
42 | def takeRight (n: Int): Réglez [A] n éléments Retour |
43 | def toArray: Array [A] Sera converti en une collection numérisée |
44 | def toBuffer [B>: A] : Buffer [B] tampon Retour, contient tous les éléments d'une collection d'immuable |
45 | def toList: Liste [A] Liste Retour, contient tous les éléments d'une collection d'immuable |
46 | def toMap [T, U]: Carte [T, U] Retour Plan, contient tous les éléments d'une collection d'immuable |
47 | def toSeq: Seq [A] Retour Seq, contient tous les éléments d'une collection d'immuable |
48 | def toString (): String Renvoie une chaîne à l'objet pour représenter |
D' autres façons de se référer à la documentation de l' API