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)