English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Scala Set (conjunto)

Conjunto Scala

Scala Set (conjunto) é um conjunto de objetos sem repetições, onde todos os elementos são únicos.

Os conjuntos Scala são divididos em conjuntos mutáveis e imutáveis.

Pelo padrão, o Scala usa conjuntos imutáveis. Se você quiser usar conjuntos mutáveis, você deve referenciar scala.collection.mutable.Set Pacote.

O padrão é referenciar scala.collection.immutable.Set, exemplos de conjuntos imutáveis são os seguintes:

val set = Set(1,2,3)
println(set.getClass.getName) // 
println(set.exists(_ %) 2 == 0)) //true
println(set.drop(1) //Set(2,3)

Se precisar usar conjuntos mutáveis, você deve importar scala.collection.mutable.Set:

import scala.collection.mutable.Set // Você pode importar conjuntos mutáveis em qualquer lugar
val mutableSet = Set(1,2,3)
println(mutableSet.getClass.getName) // scala.collection.mutable.HashSet
mutableSet.add(4)
mutableSet.remove(1)
mutableSet += 5
mutableSet -= 2
println(mutableSet) // Set(5, 3, 4)
val another = mutableSet.toSet
println(another.getClass.getName) // scala.collection.immutable.Set

Atenção:Embora os Sets mutáveis e imutáveis tenham operações de adição ou exclusão de elementos, há uma grande diferença. A operação em um Set imutável gera um novo set, e o set original não é alterado, o que é semelhante a uma Lista. Enquanto isso, a operação em um Set mutável altera o próprio Set, semelhante a um ListBuffer.

Operações básicas de conjunto

Conjunto Scala tem três operações básicas:

  • head retorna o primeiro elemento do conjunto

  • tail retorna um conjunto que contém todos os elementos exceto o primeiro

  • isEmpty retorna true quando o conjunto está vazio

Qualquer operação em conjuntos Scala pode ser expressa usando essas três operações básicas. Exemplo a seguir:

object Test {
   def main(args: Array[String]) {
      val site = Conjunto("w3codebox", "Google", "Baidu")
      val nums: Conjunto[Int] = Conjunto()
      println( "O primeiro site é : " + site.head )
      println( "O último site é : " + site.tail )
      println( "Verificar se a lista site está vazia : " + site.isEmpty )
      println( "Verificar se nums está vazio : " + nums.isEmpty )
   }
}

executar o código acima, o resultado de saída será:

$ vim Test.scala 
$ scala Test.scala 
O primeiro site é : w3codebox
O último site é : Conjunto(Google, Baidu)
Verificar se a lista site está vazia : false
Verificar se nums está vazio : true

Conectar conjuntos

você pode usar ++ Operador lógico ou Conjunto.++()) Método para conectar dois conjuntos. Se os elementos forem repetidos, eles serão removidos. Exemplo a seguir:

object Test {
   def main(args: Array[String]) {
      val site1 = Conjunto("w3codebox", "Google", "Baidu")
      val site2 = Conjunto("Faceboook", "Taobao")
      // ++ Como operador de uso
      var site = site1 ++ site2
      println( "site1 ++ site2 : " + site )
      //  ++ Como método de uso
      site = site1.++(site2)
      println( "site1.++(site2) : " + site )
   }
}

executar o código acima, o resultado de saída será:

$ vim Test.scala 
$ scala Test.scala 
site1 ++ site2 : Conjunto(Faceboook, Taobao, Google, Baidu, w3codebox)
site1.++(site2) : Conjunto(Faceboook, Taobao, Google, Baidu, w3codebox)

Procurar o elemento máximo e mínimo no conjunto

você pode usar Conjunto.min Método para encontrar o elemento mínimo no conjunto, usando Conjunto.max Método para encontrar o elemento máximo no conjunto. Exemplo a seguir:

object Test {
   def main(args: Array[String]) {
      val num = Conjunto(5,6,9,20,30,45)
      // Procurar o elemento máximo e mínimo no conjunto
      println( "Conjunto(5,6,9,20,30,45) O elemento mínimo do conjunto é : " + num.min )
      println( "Conjunto(5,6,9,20,30,45) O elemento máximo do conjunto é : " + num.max )
   }
}

executar o código acima, o resultado de saída será:

$ vim Test.scala 
$ scala Test.scala 
Set(5,6,9,20,30,45) o elemento mínimo do conjunto é : 5
Set(5,6,9,20,30,45) o elemento máximo do conjunto é : 45

intersecção

você pode usar Set.& método ou  Set.intersecção métodos para visualizar os elementos de intersecção de dois conjuntos. O exemplo é o seguinte:

object Test {
   def main(args: Array[String]) {
      val num1 = Set(5,6,9,20,30,45)
      val num2 = Set(50,60,9,20,35,55)
      // intersecção
      println( "num1.& (num2) : " + num1.& (num2) )
      println( "num1.intersecção(num2) : " + num1.intersecção(num2) )
   }
}

executar o código acima, o resultado de saída será:

$ vim Test.scala 
$ scala Test.scala 
num1.& (num2) : Set(20, 9)
num1.intersecção(num2) : Set(20, 9)

métodos comuns do Scala Set

a tabela a seguir lista os métodos comuns do Scala Set:

número de sériemétodo e descrição
1

def +(elem: A): Set[A]

adicionar um novo elemento ao conjunto, x, e criar um novo conjunto, a menos que o elemento já exista

2

def -(elem: A): Set[A]

remover um elemento do conjunto e criar um novo conjunto

3

def contém(elem: A): Boolean

se o elemento existir no conjunto, retorna true, caso contrário, retorna false.

4

def &(aquele: Set[A]): Set[A]

retornar a interseção de dois conjuntos

5

def &~(aquele: Set[A]): Set[A]

retornar a diferença entre dois conjuntos

6

def +(elem1: A, elem2: A, elems: A*: Set[A]

criar um novo conjunto imutável adicionando os elementos do conjunto especificado

7

def ++(elems: A): Set[A]

juntar dois conjuntos

8

def -(elem1: A, elem2: A, elems: A*: Set[A]

criar um novo conjunto imutável removendo os elementos do conjunto especificado

9

def adicionarString(b: StringBuilder): StringBuilder

adicionar todos os elementos de um conjunto imutável ao buffer de string

10

def adicionarString(b: StringBuilder, sep: String): StringBuilder

adicionar todos os elementos de um conjunto imutável ao buffer de string, usando um separador específico

11

def aplicar(elem: A)

detetar se um conjunto contém um elemento específico

12

def contar(p: (A) => Boolean): Int

calcular o número de elementos de um conjunto que satisfazem uma condição específica

13

def copiarParaArray(xs: Array[A], início: Int, comprimento: Int): Unit

Copia elementos da coleção imutável para um array

14

def diff(that: Set[A]): Set[A]

Compara a diferença entre duas coleções

15

def drop(n: Int): Set[A]

Retorna uma nova coleção descartando os primeiros n elementos

16

def dropRight(n: Int): Set[A]

Retorna uma nova coleção descartando os últimos n elementos

17

def dropWhile(p: (A) => Boolean): Set[A]

Descarta elementos da esquerda para a direita até que a condição p não seja mais verdadeira

18

def equals(that: Any): Boolean

O método equals pode ser usado para qualquer sequência. Usado para comparar se as séries são iguais.

19

def exists(p: (A) => Boolean): Boolean

Verifica se existe um elemento que atenda à condição específica na coleção imutável.

20

def filter(p: (A) => Boolean): Set[A]

Emita todos os elementos imutáveis que atendem à condição específica.

21

def find(p: (A) => Boolean): Option[A]

Encontra o primeiro elemento que atende à condição específica na coleção imutável

22

def forall(p: (A) => Boolean): Boolean

Verifica se a condição específica se aplica a todos os elementos da coleção

23

def foreach(f: (A) => Unit): Unit

Aplica a função a todos os elementos da coleção imutável

24

def head: A

Obtém o primeiro elemento da coleção imutável

25

def init: Set[A]

Retorna todos os elementos, exceto o último

26

def intersect(that: Set[A]): Set[A]

Calcula a interseção de duas coleções

27

def isEmpty: Boolean

Verifica se a coleção está vazia

28

def iterator: Iterador[A]

Cria um novo iterador para iterar os elementos

29

def last: A

Retorna o último elemento

30

def map[B](f: (A) => B): imutável.Set[B]

Recalcula todos os elementos usando o método fornecido

31

def max: A

Encontra o elemento maior

32

def min: A

Encontra o elemento mais pequeno

33

def mkString: String

Exibe todos os elementos da coleção como strings

34

def mkString(sep: String): String

Exibe todos os elementos da coleção como strings usando delimitadores

35

def product: A

Retorna o produto de todos os elementos numéricos do conjunto imutável

36

def size: Int

Retorna o número de elementos do conjunto imutável

37

def splitAt(n: Int): (Set[A], Set[A])

Divide o conjunto imutável em dois contêineres, o primeiro contendo os n primeiros elementos e o segundo contendo os elementos restantes

38

def subsetOf(that: Set[A]): Boolean

Se o conjunto contiver um subconjunto, retorna true, caso contrário, retorna false

39

def sum: A

Retorna a soma de todos os elementos numéricos do conjunto imutável

40

def tail: Set[A]

Retorna todos os elementos do conjunto imutável exceto o primeiro

41

def take(n: Int): Set[A]

Retorna os n primeiros elementos

42

def takeRight(n: Int): Set[A]

Retorna os n últimos elementos

43

def toArray: Array[A]

Converte o conjunto em um array

44

def toBuffer[B >: A]: Buffer[B]

Retorna um Buffer, contendo todos os elementos do conjunto imutável

45

def toList: List[A]

Retorna uma Lista, contendo todos os elementos do conjunto imutável

46

def toMap[T, U]: Map[T, U]

Retorna um Map, contendo todos os elementos do conjunto imutável

47

def toSeq: Seq[A]

Retorna um Seq, contendo todos os elementos do conjunto imutável

48

def toString(): String

Retorna uma string representando o objeto

Mais métodos podem ser consultados Documentação da API

Conjunto Scala