Como criar um conjunto (Set) e evitar elementos duplicados em Java?

O Set em Java é uma coleção que armazena apenas elementos únicos, evitando duplicatas automaticamente e oferecendo diferentes implementações para ordenação e performance.

Como criar um conjunto (Set) e evitar elementos duplicados em Java?

O Set em Java é uma estrutura de dados da interface Collection que não permite elementos duplicados. Isso é útil para armazenar itens únicos, como IDs de usuários ou nomes distintos em um cadastro.

1. Principais Implementações de Set

Implementação Características
HashSet Rápido (O(1)), sem ordem específica
LinkedHashSet Mantém a ordem de inserção
TreeSet Ordena os elementos automaticamente

2. Criando um HashSet

O HashSet é a implementação mais eficiente para garantir elementos únicos.

import java.util.*;

public class TesteHashSet {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        set.add("Java");
        set.add("Python");
        set.add("Java"); // Este elemento será ignorado

        System.out.println(set);
    }
}

Saída esperada: (A ordem pode variar)

[Java, Python]

Nota: HashSet não mantém a ordem dos elementos.

3. Mantendo a Ordem de Inserção com LinkedHashSet

Se precisarmos preservar a ordem de inserção, utilizamos LinkedHashSet.

Set<String> set = new LinkedHashSet<>();
set.add("Java");
set.add("Python");
set.add("C++");
System.out.println(set);

Saída esperada:

[Java, Python, C++]

4. Ordenando Elementos Automaticamente com TreeSet

Se precisarmos de ordenamento natural, usamos TreeSet.

Set<String> set = new TreeSet<>();
set.add("Java");
set.add("Python");
set.add("C++");
System.out.println(set);

Saída esperada: (Ordenado alfabeticamente)

[C++, Java, Python]

5. Removendo Elementos de um Set

set.remove("Java");

6. Verificando se um Elemento Existe

if (set.contains("Python")) {
    System.out.println("Python está no conjunto");
}

7. Quando Usar Cada Implementação?

Implementação Quando Usar?
HashSet Quando não precisa de ordenação e busca rápida
LinkedHashSet Quando precisa manter a ordem de inserção
TreeSet Quando precisa dos elementos ordenados

Conclusão

O Set em Java é essencial para garantir coleções sem duplicatas. O HashSet é a melhor opção para desempenho, enquanto LinkedHashSet mantém a ordem e TreeSet oferece ordenação automática. Escolher a implementação correta depende da necessidade do projeto.

O uso de Set em Java é muito comum em aplicações que precisam garantir que os elementos sejam únicos. Em bancos de dados, listas de IDs e sistemas de autenticação, Set impede duplicatas e melhora a integridade dos dados. Além disso, frameworks como Hibernate utilizam Set para armazenar coleções sem repetição, garantindo um melhor desempenho em operações de busca e filtragem.

Algumas aplicações:

  • Armazenamento de IDs únicos em bancos de dados
  • Gerenciamento de usuários sem duplicatas
  • Filtragem de listas para remover elementos repetidos
  • Otimização de buscas e verificações em coleções

Dicas para quem está começando

  • Use HashSet para desempenho rápido
  • Escolha LinkedHashSet se precisar manter a ordem de inserção
  • Opte por TreeSet se precisar de ordenação automática
  • Evite modificar TreeSet se a performance for uma prioridade
  • Teste Set com grandes volumes de dados para avaliar a eficiência
Foto de Rodrigo Farias
Contribuições de
Rodrigo Farias

Desenvolvedor Java focado em aplicações corporativas e microsserviços.

Mais sobre o autor
Compartilhe este tutorial: Como criar um conjunto Set e evitar elementos duplicados em Java

Compartilhe este tutorial

Continue aprendendo:

Como converter um ArrayList em um array e vice-versa

A conversão entre ArrayList e array em Java pode ser feita com toArray(), Arrays.asList() e técnicas eficientes para manipulação de coleções.

Tutorial anterior

Como ler um arquivo de texto em Java

A leitura de arquivos de texto em Java pode ser feita utilizando FileReader, BufferedReader ou a API NIO para manipulação eficiente de dados.

Próximo tutorial