Collezione Scala - Set

Scala Set è una raccolta di elementi diversi a coppie dello stesso tipo. In altre parole, un Set è una raccolta che non contiene elementi duplicati. Esistono due tipi di Set, iimmutable e il mutable. La differenza tra oggetti mutabili e immutabili è che quando un oggetto è immutabile, l'oggetto stesso non può essere modificato.

Per impostazione predefinita, Scala utilizza il set immutabile. Se vuoi usare il set mutabile, dovrai importarescala.collection.mutable.Setclass esplicitamente. Se desideri utilizzare sia l'insieme mutabile che quello immutabile nella stessa raccolta, puoi continuare a fare riferimento all'insieme immutabile comeSet ma puoi fare riferimento al set mutevole come mutable.Set.

Ecco come puoi dichiarare insiemi immutabili:

Sintassi

// 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)

Durante la definizione di un insieme vuoto, l'annotazione del tipo è necessaria poiché il sistema deve assegnare un tipo concreto alla variabile.

Operazioni di base sul set

Tutte le operazioni sugli insiemi possono essere espresse nei termini dei seguenti tre metodi:

Suor n Metodi e descrizione
1

head

Questo metodo restituisce il primo elemento di un set.

2

tail

Questo metodo restituisce un insieme composto da tutti gli elementi tranne il primo.

3

isEmpty

Questo metodo restituisce true se il set è vuoto, altrimenti false.

Prova il seguente esempio che mostra l'utilizzo dei metodi operativi di base:

Esempio

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 )
   }
}

Salvare il programma sopra in formato Demo.scala. I seguenti comandi vengono utilizzati per compilare ed eseguire questo programma.

Comando

\>scalac Demo.scala
\>scala Demo

Produzione

Head of fruit : apples
Tail of fruit : Set(oranges, pears)
Check if fruit is empty : false
Check if nums is empty : true

Set concatenati

Puoi usare entrambi ++ operatore o Set.++() metodo per concatenare due o più set, ma durante l'aggiunta di set rimuoverà gli elementi duplicati.

Il seguente è l'esempio per concatenare due set.

Esempio

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 )
   }
}

Salvare il programma sopra in formato Demo.scala. I seguenti comandi vengono utilizzati per compilare ed eseguire questo programma.

Comando

\>scalac Demo.scala
\>scala Demo

Produzione

fruit1 ++ fruit2 : Set(banana, apples, mangoes, pears, oranges)
fruit1.++(fruit2) : Set(banana, apples, mangoes, pears, oranges)

Trova elementi massimi e minimi in un set

Puoi usare Set.min metodo per scoprire il minimo e Set.maxmetodo per scoprire il massimo degli elementi disponibili in un set. Di seguito è riportato l'esempio per mostrare il programma.

Esempio

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 )
   }
}

Salvare il programma sopra in formato Demo.scala. I seguenti comandi vengono utilizzati per compilare ed eseguire questo programma.

Comando

\>scalac Demo.scala
\>scala Demo

Produzione

Min element in Set(5,6,9,20,30,45) : 5
Max element in Set(5,6,9,20,30,45) : 45

Trova inserti di valori comuni

Puoi usare entrambi Set.& metodo o Set.intersectmetodo per scoprire i valori comuni tra due insiemi. Prova il seguente esempio per mostrare l'utilizzo.

Esempio

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) )
   }
}

Salvare il programma sopra in formato Demo.scala. I seguenti comandi vengono utilizzati per compilare ed eseguire questo programma.

Comando

\>scalac Demo.scala
\>scala Demo

Produzione

num1.&(num2) : Set(20, 9)
num1.intersect(num2) : Set(20, 9)