Collections Scala - Ensemble
Scala Set est une collection d'éléments différents par paires du même type. En d'autres termes, un Set est une collection qui ne contient aucun élément en double. Il existe deux types d'ensembles, leimmutable et le mutable. La différence entre les objets mutables et immuables est que lorsqu'un objet est immuable, l'objet lui-même ne peut pas être modifié.
Par défaut, Scala utilise le Set immuable. Si vous souhaitez utiliser l'ensemble mutable, vous devrez importerscala.collection.mutable.Setclasse explicitement. Si vous souhaitez utiliser à la fois des ensembles mutables et immuables dans la même collection, vous pouvez continuer à faire référence à l'ensemble immuable commeSet mais vous pouvez faire référence à l'ensemble mutable comme mutable.Set.
Voici comment déclarer des ensembles immuables -
Syntaxe
// Empty set of integer type
var s : Set[Int] = Set()
// Set of integer type
var s : Set[Int] = Set(1,3,5,7)
or
var s = Set(1,3,5,7)
Lors de la définition d'un ensemble vide, l'annotation de type est nécessaire car le système doit affecter un type concret à la variable.
Opérations de base sur le plateau
Toutes les opérations sur les ensembles peuvent être exprimées en termes des trois méthodes suivantes -
Sr. Non | Méthodes et description |
---|---|
1 | head Cette méthode retourne le premier élément d'un ensemble. |
2 | tail Cette méthode renvoie un ensemble composé de tous les éléments sauf le premier. |
3 | isEmpty Cette méthode renvoie true si l'ensemble est vide, sinon false. |
Essayez l'exemple suivant montrant l'utilisation des méthodes opérationnelles de base -
Exemple
object Demo {
def main(args: Array[String]) {
val fruit = Set("apples", "oranges", "pears")
val nums: Set[Int] = Set()
println( "Head of fruit : " + fruit.head )
println( "Tail of fruit : " + fruit.tail )
println( "Check if fruit is empty : " + fruit.isEmpty )
println( "Check if nums is empty : " + nums.isEmpty )
}
}
Enregistrez le programme ci-dessus dans Demo.scala. Les commandes suivantes sont utilisées pour compiler et exécuter ce programme.
Commander
\>scalac Demo.scala
\>scala Demo
Production
Head of fruit : apples
Tail of fruit : Set(oranges, pears)
Check if fruit is empty : false
Check if nums is empty : true
Ensembles de concaténation
Vous pouvez utiliser soit ++ opérateur ou Set.++() méthode pour concaténer deux ou plusieurs ensembles, mais lors de l'ajout d'ensembles, cela supprimera les éléments en double.
Voici l'exemple de concaténation de deux ensembles.
Exemple
object Demo {
def main(args: Array[String]) {
val fruit1 = Set("apples", "oranges", "pears")
val fruit2 = Set("mangoes", "banana")
// use two or more sets with ++ as operator
var fruit = fruit1 ++ fruit2
println( "fruit1 ++ fruit2 : " + fruit )
// use two sets with ++ as method
fruit = fruit1.++(fruit2)
println( "fruit1.++(fruit2) : " + fruit )
}
}
Enregistrez le programme ci-dessus dans Demo.scala. Les commandes suivantes sont utilisées pour compiler et exécuter ce programme.
Commander
\>scalac Demo.scala
\>scala Demo
Production
fruit1 ++ fruit2 : Set(banana, apples, mangoes, pears, oranges)
fruit1.++(fruit2) : Set(banana, apples, mangoes, pears, oranges)
Rechercher des éléments Max, Min dans un ensemble
Vous pouvez utiliser Set.min méthode pour connaître le minimum et Set.maxméthode pour connaître le maximum d'éléments disponibles dans un ensemble. Voici l'exemple pour montrer le programme.
Exemple
object Demo {
def main(args: Array[String]) {
val num = Set(5,6,9,20,30,45)
// find min and max of the elements
println( "Min element in Set(5,6,9,20,30,45) : " + num.min )
println( "Max element in Set(5,6,9,20,30,45) : " + num.max )
}
}
Enregistrez le programme ci-dessus dans Demo.scala. Les commandes suivantes sont utilisées pour compiler et exécuter ce programme.
Commander
\>scalac Demo.scala
\>scala Demo
Production
Min element in Set(5,6,9,20,30,45) : 5
Max element in Set(5,6,9,20,30,45) : 45
Rechercher des encarts de valeurs communes
Vous pouvez utiliser soit Set.& méthode ou Set.intersectméthode pour connaître les valeurs communes entre deux ensembles. Essayez l'exemple suivant pour montrer l'utilisation.
Exemple
object Demo {
def main(args: Array[String]) {
val num1 = Set(5,6,9,20,30,45)
val num2 = Set(50,60,9,20,35,55)
// find common elements between two sets
println( "num1.&(num2) : " + num1.&(num2) )
println( "num1.intersect(num2) : " + num1.intersect(num2) )
}
}
Enregistrez le programme ci-dessus dans Demo.scala. Les commandes suivantes sont utilisées pour compiler et exécuter ce programme.
Commander
\>scalac Demo.scala
\>scala Demo
Production
num1.&(num2) : Set(20, 9)
num1.intersect(num2) : Set(20, 9)