collections_conjuntos - F4NT0/J4V4 GitHub Wiki
Retornar |
---|
-
Um conjunto permite armazenar objetos distintos
- Não existem elementos duplicados
- Não existe a noção explícita de chave ou ordem
-
Definição Matemática dos Conjuntos em Java
- União = addAll()
- Intersecção = retainAll()
- Diferença = removeAll()
- Contém = containsAll()
-
Tendo também na computação os Métodos básicos como:
- adicionar um por vez = add()
- remover um por vez = remove()
- ver o tamanho = size()
-
Como funcionam esses métodos em um conjunto:
Operação | Saída | Conjunto | Observação |
---|---|---|---|
add(5) | true | {5} | o Conjunto é iniciado vazio e agora foi colocado um primeiro valor |
add(8) | true | {5,8} | Todos os novos valores adicionados serão colocados a direita |
addAll({3,4,6}) | true | {5,8,3,4,6} | Podemos colocar mais de um valor ao mesmo tempo, adicionados a direita |
add(5) | false | {5,8,3,4,6} | Não podemos colocar um valor que já existe dentro do conjunto |
containsAll({3,5,6}) | true | {5,8,3,4,6} | Por existirem tais valores no conjunto, o método retorna true |
containsAll({1,2}) | false | {5,8,3,4,6} | Como não existem nenhum elemento no conjunto, retorna false |
remove(5) | true | {8,3,4,6} | O método retorna true se o elemento existir e o exclui do conjunto |
removeAll({8,3,4}) | true | {6} | Se os elementos existirem no conjunto, serão deletados |
size() | 1 | {6} | O método size retorna quantos elementos existem dentro do conjunto |
addAll({1,2,3,4,5}) | true | {1,2,3,4,5,6} | |
retainAll({1,2,3}) | true | {1,2,3} | Esse método somente irá pegar os valores existentes que você pediu |
-
Considerada uma interface que faz parte do pacote java.util: import java.util.Set
-
Set representa grupo de elementos sem duplicados na coleção
-
Caracteristicas da Interface Set
- Velocidade na pesquisa de dados,sendo mais rápida que um objeto do tipo List
- Inserção de dados é mais lenta
- Permite trabalhar com conjuntos e pode ser implementado como instâncias das classes HashSet ou TreeSet
- Não precisa especificar a posição para adicionar um elemento
- Não aceita valores duplicados, se tentar ele não irá inserir
- Podem ser implementados como instâncias da Classe HashSet ou TreeSet
-
Simtaxe do Set:
Set nome = new Type();
//Type: é o tipo de objeto da coleção Set a ser usado
//nome: é o nome desejado para o Set
-
Classe que faz parte do pacote java.util e que é a implementação da Interface Set, utilizando uma tabela hash
-
HashSet não tem ordenação na varredura ou impressão. A ordem de saida não é a mesma de entrada
-
Aceitam valores do tipo null
-
Não é sincronizada
-
Velocidade no acesso, leitura e modificação de dados
-
Sintaxe do HashSet
HashSet<E> set = new Type<E>();
//E é o objeto declarado,podendo ser tipo de coleção
//Type é o tipo de objeto da coleção a ser usado
- EXEMPLO
//Irá ser usado como exemplo uma classe objeto chamada pessoas onde precisa de um nome e idade
import java.util.HashSet;
import java.util.Iterator;
public class TesteHashSet {
public static void main(String[] args){
HashSet<Pessoas> conjuntoPessoas = new HashSet<Pessoas>();
//adicionando valores dentro do HashSet
conjuntoPessoas.add(new Pessoas("Gabriel",22));
conjuntoPessoas.add(new Pessoas("Pedro",30));
conjuntoPessoas.add(new Pessoas("Silvio",20));
//verificando quantos valores existem
System.out.println(conjuntoPessoas.size());
//Utilizando o Iterator para imprimir os valores de dentro do HashSet
Iterator<Pessoas> leitura = conjuntoPessoas.iterator();
while(leitura.hasNext()){
Pessoas pessoas = (Pessoas)leitura.next();
System.out.println(pessoas);
}
}
}
-
Essa classe fornece objetos de coleção de ordenação natural e faz parte da implementação da interface Set
-
Esta localizada em: import java.util.TreeSet
-
Caracteristicas:
- Os elementos inseridos dentro desse tipo de conjunto devem implementar a interface Comparable
- A ordenação é por elementos únicos
- Não suporta objetos nulos, se caso um elemento ser nulo é lançado uma exceção NullPointerException
-
Declaração de um TreeSet
- Ele só pode ser declarado com um Set
Set<E> nome = new TreeSet<E>();
//E é o objeto declarado, podendo ser classes ou tipo de coleção
- Exemplo de implementação de TreeSet
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
public class TesteTreeSet{
public static void main(String[] args){
//Utilizando o HashSet para guardar nomes de linguagens de programação
//Por ser HashSet, eles estão na ordem que foram adicionados
Set<String> linguagens = new HashSet<String>();
linguagens.add("Java");
linguagens.add("PHP");
linguagens.add("Ruby");
linguagens.add("Python");
linguagens.add("C++");
//Utilizando o TreeSet para ordenar os dados entrados no HashSet
Set<String> ordenado = new TreeSet<String>(linguagens);
//Imprimindo os dois para verificar a ordenação
System.out.println("Sem Ordenação: " + linguagens);
System.out.println("Com Ordenação: " + ordenado);
}
}
- Saida do Teste:
Sem Ordenação: [Java, C++, PHP, Ruby, Python]
Com Ordenação: [C++, Java, PHP, Python, Ruby]