Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Básico sobre HashSet
  2. Declaração de um HashSet
  3. Acessando elemento
  4. Remover um elemento
  5. Tamanho de um HashSet
  6. Prcorrer um HashSet
  7. HashSet e métodos
  8. Métodos da classe HashSet
  9. Métodos das interfaces

O tipo de dado HashSet consiste em um coleção dinâmica de dados com métodos inserção, remoção, acesso e outros. Na parte inicial, vamos aprender algumas operaçoes básicas e mais adiante os métodos da classe java.util.HashSet.

Algumas características:

  1. Dinâmico
  2. Não ordenado
  3. Acesso randômico a elementos
  4. Não permite elemento repetido
  5. Não ordenado
Interfaces implementadas:

  1. Serializable
  2. Cloneable
  3. Iterable
  4. Collection
  5. Set

Para a utilização do tipo de dado HashSet, precisamos importar sua classe como na sintaxe abaixo:

Sintaxe
import java.util.HashSet;

O tipo de dado HashSet utiliza o conceito de Generics, e sua instanciação é feita de acordo com a sintaxe abaixo:

Sintaxe
HashSet<E> nome_objeto = new HashSet<E>()
HashSet<E> nome_objeto = new  HashSet(int initialCapacity)
HashSet<E> nome_objeto = new HashSet(int initialCapacity, float loadFactor)
HashSet<E> nome_objeto = new HashSet(Collection<? extends E> c)
Onde
E: Tipo de dado dos elementos
c: Coleção origem para criação de uma HashSet
initialCapacity: capacidade inicial

Exemplo 1
//Main.java
import java.util.HashSet;

public class Main
{
	public static void main(String[] args) {
	    
        //HashSet<E>()
        HashSet<String> hs = new HashSet<String>();

        //HashSet(Collection<? extends E> c)
        HashSet<String> hs2 = new HashSet<String>(hs);
	}
}
Saída
-

Novos elementos podem ser adicionados em um HashSet com o método add mostrado na sintaxe abaixo:

Sintaxe
public boolean add(E e)
Onde
e: elemento que desejamos adicionar
E: tipo de dado utilizado pelo hashSet
Retorno
true se e já existe, false caso contrário
Exemplo 2
//Main.java
import java.util.HashSet;

public class Main
{
	public static void main(String[] args) {
	    
        HashSet<String> hs = new HashSet<String>();
        
        hs.add("Uma");
        hs.add("HashSet");
        hs.add("com");
        hs.add("strings?");
        
        System.out.println(hs);
	}
}
Saída
[com, strings?, Uma, HashSet]

Para ter acesso a um elemento de um HashSet, utilizamos seu iterador(Iterator) que possui o método next que retorna o próximo elemento.

Sintaxe
public public E next();
Onde
E: tipo de dado referenciado
Exemplo 3
//Main.java
import java.util.HashSet;
import java.util.Iterator;

public class Main
{
	public static void main(String[] args) {
	    
        HashSet<String> hs = new HashSet<String>();
        
        hs.add("Uma");
        hs.add("HashSet");
        hs.add("com");
        hs.add("strings?");
        
        Iterator i = hs.iterator();
        
        System.out.println(i.next());
        System.out.println(i.next());
        System.out.println(i.next());
        System.out.println(i.next());
   	}
}
Saída
com
strings?
Uma
HashSet

Para termos conhecimento do número de elementos contido em uma HashSet, utilizamos o método size que retorna um inteiro que representa o número de elementos.

Sintaxe
public int size()
Exemplo 4
//Main.java
import java.util.HashSet;

public class Main
{
	public static void main(String[] args) {
	    
        HashSet<String> hset = new HashSet<String>();
        
        hset.add("Uma");
        hset.add("HashSet");
        hset.add("com");
        hset.add("strings?");
        
        System.out.println(hset.size());
	}

}
Saída
4

Para removermos elementos de um HashSet, utilizamos o método remove que recebem um objeto para remoção como argumento.

Sintaxe
public boolean remove(Object o)
Onde
o: elemento para remoção
Exemplo 5
//Main.java
import java.util.HashSet;

public class Main
{
	public static void main(String[] args) {
	    
        HashSet<String> hset = new HashSet<String>();
        
        hset.add("Uma");
        hset.add("HashSet");
        hset.add("com");
        hset.add("strings?");
        
        System.out.println(hset);
        hset.remove("Uma");
        System.out.println(hset);
	}
}
Saída
[com, strings?, Uma, HashSet]
[com, strings?, HashSet]

Para percorrermos um HashSet, utilizamos comando for na forma foreach, método forEach ou comando while em conjunto com os métodos do iterador do hashSet.

Sintaxe
for( tipo_dado : nome_hashset){/**/}
public void forEach(BiConsumer<? super E> action)
Onde
E: tipo de dado do hashSet
action: expressão lambda

Exemplo 6
//Main.java
import java.util.HashSet;

public class Main
{
	public static void main(String[] args) {
	    
        HashSet<String> hset = new HashSet<String>();
        
        hset.add("Uma");
        hset.add("HashSet");
        hset.add("com");
        hset.add("strings?");
        
        for(String str: hset)
            System.out.println(str);
    }
}
Saída
com
strings?
Uma
HashSet

Para melhor compreensão do exemplo abaixo, é necessário ter conhecimento sobre expressão lambda utilizada em conjunto com o método forEach.

Exemplo 7
//Main.java
import java.util.HashSet;

public class Main
{
	public static void main(String[] args) {
	    
        HashSet<String> hset = new HashSet<String>();
        
        hset.add("Uma");
        hset.add("HashSet");
        hset.add("com");
        hset.add("strings?");
        
        hset.forEach((str) -> {
            System.out.println(str);
        });
    }
}
Saída
com
strings?
Uma
HashSet

Abaixo, um exemplo de iteração utilizando o comando while e métodos hasNext e next de um iterador do hashSet.

Exemplo 8
//Main.java
import java.util.HashSet;
import java.util.Iterator;

public class Main
{
    
	public static void main(String[] args) {
	    
        HashSet<String> hset = new HashSet<String>();
        
        hset.add("Uma");
        hset.add("HashSet");
        hset.add("com");
        hset.add("strings?");
        
        Iterator i = hset.iterator();
        
        while(i.hasNext()){
            System.out.println(i.next());
        }
   }
}
Saída
com
strings?
Uma
HashSet

Podemos utilizar o tipo de dado HashSet como parâmetro de um método assim como qualquer outro tipo de dados como foi visto em Java > POO: Métodos.

Sintaxe
modificador_acesso HashSet<E> nome_metodo(HashSet<E> nome_parametro){
  //corpo
}
Onde
E: tipo de dado referenciado.
Exemplo 4
//Teste.java
import java.util.HashSet;

public class Main
{
    public static void metodo1(HashSet<String> hs){
        System.out.println(hs);
    }
    
    public static HashSet<String> metodo2(){
        HashSet<String> hset = new HashSet<String>();
        
        hset.add("Outro");
        hset.add("HashSet");

        return hset;
    }
    
	public static void main(String[] args) {
	    
        HashSet<String> hset = new HashSet<String>();
        
        hset.add("Um");
        hset.add("HashSet");

        metodo1(hset);
        System.out.println(metodo2());
	}
}
Saída
[Um, HashSet]
[Outro, HashSet]

A classe java.util.HashSet fornece métodos para manipular seus dados. Abaixo uma lista de todos os métodos dessa classe, exceto métodos das classes herdadas.

Tab. 1: Métodos HashSet
Método Descrição
add(E e) Adiciona um elemento
clear() Remove todos os elementos
clone() Clona um HashSet
contains(Object o) Verificar se um elemento está contido
isEmpty() Verifica se HashSet está vazio
iterator() Retorna iterador
remove(Object o) Remove a primeira ocorrência de um elemento
size() Retorna número de elementos
spliterator()
subList(int fromIndex, int toIndex)
toArray() Retorna os elementos como array
toArray(T[] a)

Com o método add podemos adicionar um novo elemento em um HashSet. Esse método recebe um argumento e retorna um valor booleano.

Sintaxe
public boolean add(E e)
Onde
e: elemento para adicionar
E: tipo de dado do hashSet
Retorno
true se elemento não existe, false caso contrário
Exemplo
//Main.java
import java.util.HashSet;

public class Main
{
	public static void main(String[] args) {
	    
        HashSet<String> hset = new HashSet<String>();
        
        hset.add("Uma");
        hset.add("HashSet");
        hset.add("com");
        hset.add("strings?");

        System.out.println(hset);
    }
}
Saída
[com, strings?, Uma, HashSet]

Utilizando o método clear, podemos excluir todos os elementos de um HashSet. Esse método não aceita argumentos e não possui retorno.

Sintaxe
public void clear()
Exemplo
//Main.java
import java.util.HashSet;

public class Main
{
    
	public static void main(String[] args) {
	    
        HashSet<String> hset = new HashSet<String>();
        
        hset.add("Uma");
        hset.add("HashSet");
        hset.add("com");
        hset.add("string?");

        System.out.println(hset);
        hset.clear();
        System.out.println(hset);
    }
}
Saída
[com, Uma, string?, HashSet]
[]

O método contains é utilizado para verificar se um determinado elemento está contido em um HashSet.

Sintaxe
public boolean contains(Object o)
Onde
o: elemento para verificar
Retorno
true se elemento o está contido, false caso contrário
Exemplo
//Main.java
import java.util.HashSet;

public class Main
{
	public static void main(String[] args) {
	    
        HashSet<String> hset = new HashSet<String>();
      
        hset.add("Uma");
        hset.add("HashSet");
        hset.add("com");
        hset.add("string?");

        System.out.println(hset);
        System.out.println(hset.contains("HashSet"));
    }
}
Saída
true

O métodos isEmpty é utilizados verificar se um HashSet contem ou não elementos. Esse método não recebe argumentos e retorna um booleano como resultado.

Sintaxe
public boolean isEmpty()
Retorno
true se vazio, false caso contrário
Exemplo
//Main.java
import java.util.ArrayList;

public class Main
{
	public static void main(String[] args) {
	    
        HashSet<String> hset = new HashSet<String>();
        
        v.add(2);
        v.add(4);
        v.add(6);

        System.out.println(v.isEmpty());
	}
}
Saída
false

Com o método remove podemos remover um elemento de um HashSet. Um valor booleano é retornado pelo método.

Sintaxe
public boolean remove(Object o)
Onde
o: elemento para remoção
Retorno
true se o está contido, false caso contrário
Exemplo
//Main.java
import java.util.HashSet;
public class Main
{
    
	public static void main(String[] args) {
	    
        HashSet<String> hset = new HashSet<String>();
        
        hset.add("uma");
        hset.add("HashSet");
        hset.add("com");
        hset.add("string?");

        System.out.println(hset);
        hset.remove("string?");
        System.out.println(hset);
    }
}
Saída
true

Com o método size podemos descobrir o número de elementos contidos em um HashSet. Esse método não recebe argumentos e retorna um inteiro.

Sintaxe
public int size()
Retorno
Inteiro contendo o número de elementos
Exemplo
//Main.java
import java.util.HashSet;

public class Main
{
	public static void main(String[] args) {
	    
        HashSet<Integer> v = new HashSet<Integer>();
        
        v.add(2);
        v.add(4);
        v.add(6);

        System.out.println(v);
        System.out.println(v.size());
	}
}
Saída
[2, 4, 6]
3

Utilizando o método toArray podemos converter o conteúdo de uma HashSet para um vetor/array de Object. Esse método não recebe argumentos.

Sintaxe
public Object[] toArray()
Retorno
Vetor de Object contendo elementos do HashSet
Exemplo
//Main.java
import java.util.HashSet;

public class Main
{
	public static void main(String[] args) {
	    
        HashSet<Integer> v = new HashSet<Integer>();
        
        v.add(2);
        v.add(4);
        v.add(6);

        Object[] array = v.toArray();
        
        for( Object o : array){
            System.out.println(o);
        }
	}
}
Saída
2
4
6
  1. 25/07/2025 - revisão 4 - Correção em descrição de métodos; Ajustes: sintaxes, Tab.1 links movidos para métodos
  2. 04/10/2024 - revisão 3 - Correção: link 'HashSet como parâmetro...'; Remoção 'Empty' duplicado; Correções pontuais
  3. 02/09/2024 - revisão 2 - Correção em links de add e remove
  4. 08/02/2024 - revisão 1 - correção em navegação e erros gramaticais
  5. 04/09/2023 - versão inicial