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)