Set
Um Set
, ou conjunto, armazena valores de um mesmo tipo, sem repetição, em uma coleção sem uma ordem definida. Você pode usar um set ao invés de um array quando a ordem dos elementos não é importante ou quando você precisa garantir que um item apareça apenas uma vez na coleção.
Criando um Set
Para criar um Set
com um array literal, definindo um ou mais valores iniciais, utiliza-se o seguinte esquema:
Caso você esteja declarando um Set
utilizando um array literal que possua dados de apenas um tipo, o Swift consegue inferir qual tipo de dado aquela coleção possuirá, reduzindo então a quantidade de código necessária:
Criando um Set sem nenhum elemento dentro:
Adicionando Elementos
Para adicionar um valor em um Set, é necessário utilizar o método insert(_:)
:
Removendo Elementos
Para remover um elemento, é necessário utilizar o método remove(_:)
. Este método removerá o elemento caso ele seja membro do Set
, e retornará o valor. Caso o elemento não exista no Set
, o método retorna nil
:
Também é possível remover todos os itens de um Set
através do método removeAll()
:
Verificando a Existência de Elementos
Para verificar se um Set
contém um elemento, utilize o método contains(_:)
. Caso o elemento exista, o método retornará true
, caso contrário, retornará false
:
Iterando em um Set
Para passar por todos os valores de um Set
, você pode utilizar o for-in
loop:
Operações com Set
O Set
possui um diferencial em relação a outras coleções como arrays e dicionários, pois permite realizar uma série de operações matemáticas de conjunto em seus elementos. Estão listados a seguir alguns métodos fundamentais e suas funcionalidades:
.union(_:)
: Cria um novoSet
contendo todos os valores de ambos os sets.
.intersection(_:)
: Cria um novoSet
contendo os valores em comum em ambos os sets.
.subtracting(_:)
: Cria um novoSet
contendo apenas os valores que não estão presentes no set passado como parâmetro.
.symmetricDifference(_:)
: Cria um novoSet
contendo os valores de ambos os sets, excluindo os valores em comum.
Também existem métodos para verificar o relacionamento entre diferentes Sets:
==
: Determina se dois Sets possuem exatamente os mesmos valores.
isSubset(of:)
: Determina se um set está contido no set passado como parâmetro.
isSuperset(of:)
: Determina se um set contém o set passado como parâmetro.
isDisjoint(with:)
: Determina se dois sets não possuem valores em comum.