Coleções de Scala - Conjunto

Scala Set é uma coleção de elementos diferentes em pares do mesmo tipo. Em outras palavras, um Conjunto é uma coleção que não contém elementos duplicados. Existem dois tipos de conjuntos, oimmutable e a mutable. A diferença entre objetos mutáveis ​​e imutáveis ​​é que quando um objeto é imutável, o próprio objeto não pode ser alterado.

Por padrão, Scala usa o Conjunto imutável. Se você quiser usar o conjunto mutável, você terá que importarscala.collection.mutable.Setclasse explicitamente. Se você deseja usar conjuntos mutáveis ​​e imutáveis ​​na mesma coleção, você pode continuar a referir-se ao conjunto imutável comoSet mas você pode se referir ao conjunto mutável como mutable.Set.

Aqui está como você pode declarar conjuntos imutáveis ​​-

Sintaxe

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

Ao definir um conjunto vazio, a anotação de tipo é necessária, pois o sistema precisa atribuir um tipo concreto à variável.

Operações básicas no set

Todas as operações em conjuntos podem ser expressas em termos dos seguintes três métodos -

Sr. Não Métodos e Descrição
1

head

Este método retorna o primeiro elemento de um conjunto.

2

tail

Este método retorna um conjunto que consiste em todos os elementos, exceto o primeiro.

3

isEmpty

Este método retorna verdadeiro se o conjunto estiver vazio, caso contrário, é falso.

Experimente o exemplo a seguir, mostrando o uso dos métodos operacionais básicos -

Exemplo

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

Salve o programa acima em Demo.scala. Os seguintes comandos são usados ​​para compilar e executar este programa.

Comando

\>scalac Demo.scala
\>scala Demo

Resultado

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

Conjuntos de concatenação

Você pode usar qualquer ++ operador ou Set.++() método para concatenar dois ou mais conjuntos, mas ao adicionar conjuntos removerá elementos duplicados.

A seguir está o exemplo para concatenar dois conjuntos.

Exemplo

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

Salve o programa acima em Demo.scala. Os seguintes comandos são usados ​​para compilar e executar este programa.

Comando

\>scalac Demo.scala
\>scala Demo

Resultado

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

Encontre o máximo e o mínimo de elementos em um conjunto

Você pode usar Set.min método para descobrir o mínimo e Set.maxmétodo para descobrir o máximo de elementos disponíveis em um conjunto. A seguir está o exemplo para mostrar o programa.

Exemplo

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

Salve o programa acima em Demo.scala. Os seguintes comandos são usados ​​para compilar e executar este programa.

Comando

\>scalac Demo.scala
\>scala Demo

Resultado

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

Encontre inserções de valores comuns

Você pode usar qualquer Set.& método ou Set.intersectmétodo para descobrir os valores comuns entre dois conjuntos. Experimente o seguinte exemplo para mostrar o uso.

Exemplo

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

Salve o programa acima em Demo.scala. Os seguintes comandos são usados ​​para compilar e executar este programa.

Comando

\>scalac Demo.scala
\>scala Demo

Resultado

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