collections_conjuntos - F4NT0/J4V4 GitHub Wiki

Retornar

Conjuntos em Java

Conjuntos

  • 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

Interface que utiliza os Conjuntos

Interface Set

  • 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

HashSet

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



}

TreeSet

  • 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]

⚠️ **GitHub.com Fallback** ⚠️