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)