Colecciones Scala - Set
Scala Set es una colección de elementos diferentes del mismo tipo por pares. En otras palabras, un conjunto es una colección que no contiene elementos duplicados. Hay dos tipos de Conjuntos, elimmutable y el mutable. La diferencia entre objetos mutables e inmutables es que cuando un objeto es inmutable, el objeto en sí no se puede cambiar.
De forma predeterminada, Scala usa el conjunto inmutable. Si desea utilizar el conjunto mutable, tendrá que importarscala.collection.mutable.Setclase explícitamente. Si desea utilizar conjuntos mutables e inmutables en la misma colección, puede continuar refiriéndose al conjunto inmutable comoSet pero puede referirse al conjunto mutable como mutable.Set.
Así es como puede declarar conjuntos inmutables:
Sintaxis
// 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)
Al definir un conjunto vacío, la anotación de tipo es necesaria ya que el sistema necesita asignar un tipo concreto a la variable.
Operaciones básicas en el set
Todas las operaciones en conjuntos se pueden expresar en términos de los siguientes tres métodos:
No Señor | Métodos y descripción |
---|---|
1 | head Este método devuelve el primer elemento de un conjunto. |
2 | tail Este método devuelve un conjunto que consta de todos los elementos excepto el primero. |
3 | isEmpty Este método devuelve verdadero si el conjunto está vacío; de lo contrario, es falso. |
Pruebe el siguiente ejemplo que muestra el uso de los métodos operativos básicos:
Ejemplo
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 )
}
}
Guarde el programa anterior en Demo.scala. Los siguientes comandos se utilizan para compilar y ejecutar este programa.
Mando
\>scalac Demo.scala
\>scala Demo
Salida
Head of fruit : apples
Tail of fruit : Set(oranges, pears)
Check if fruit is empty : false
Check if nums is empty : true
Conjuntos de concatenación
Puedes usar cualquiera ++ operador o Set.++() método para concatenar dos o más conjuntos, pero al agregar conjuntos eliminará los elementos duplicados.
El siguiente es el ejemplo para concatenar dos conjuntos.
Ejemplo
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 )
}
}
Guarde el programa anterior en Demo.scala. Los siguientes comandos se utilizan para compilar y ejecutar este programa.
Mando
\>scalac Demo.scala
\>scala Demo
Salida
fruit1 ++ fruit2 : Set(banana, apples, mangoes, pears, oranges)
fruit1.++(fruit2) : Set(banana, apples, mangoes, pears, oranges)
Encuentra elementos máximos y mínimos en un conjunto
Puedes usar Set.min método para averiguar el mínimo y Set.maxmétodo para averiguar el máximo de elementos disponibles en un conjunto. A continuación se muestra el ejemplo para mostrar el programa.
Ejemplo
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 )
}
}
Guarde el programa anterior en Demo.scala. Los siguientes comandos se utilizan para compilar y ejecutar este programa.
Mando
\>scalac Demo.scala
\>scala Demo
Salida
Min element in Set(5,6,9,20,30,45) : 5
Max element in Set(5,6,9,20,30,45) : 45
Buscar recuadros de valores comunes
Puedes usar cualquiera Set.& método o Set.intersectmétodo para averiguar los valores comunes entre dos conjuntos. Pruebe el siguiente ejemplo para mostrar el uso.
Ejemplo
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) )
}
}
Guarde el programa anterior en Demo.scala. Los siguientes comandos se utilizan para compilar y ejecutar este programa.
Mando
\>scalac Demo.scala
\>scala Demo
Salida
num1.&(num2) : Set(20, 9)
num1.intersect(num2) : Set(20, 9)