logo

Diferença entre as classes HashSet e HashMap em Java

O HashMap e HashSet em Java são as classes Collection mais populares. Ambos são usados ​​para a estrutura de dados. A tabela a seguir descreve a diferença entre HashMap e HashSet:

Base HashMap HashSet
Definição Java HashMap é uma implementação baseada em tabela hash da interface Map. HashSet é um conjunto. Ele cria uma coleção que usa uma tabela hash para armazenamento.
Implementação Implementos HashMap Mapa, clonável e serializável interface es. Implementos HashSet Definir, Clonável, Serializável, Iterável e Coleção interfaces.
Lojas No HashMap armazenamos um par chave-valor . Ele mantém o mapeamento de chave e valor. No HashSet, armazenamos objetos .
Valores duplicados Não permite chaves duplicadas , mas valores duplicados são permitido . Não permite valores duplicados .
Valores nulos Pode conter um chave nula única e vários valores nulos . Pode conter um único valor nulo .
Método de inserção HashMap usa o colocar() método para adicionar os elementos no HashMap. HashSet usa o adicionar() método para adicionar elementos no HashSet.
Desempenho HashMap é mais rápido/ do que HashSet porque os valores estão associados a uma chave exclusiva. HashSet é Mais devagar do que HashMap porque o objeto membro é usado para calcular o valor do código hash, que pode ser o mesmo para dois objetos.
O número de objetos Apenas um objeto é criado durante a operação de adição. dois objetos criados durante a operação put, um para chave e um para valor .
Mecanismo de armazenamento HashMap usa internamente hash para armazenar objetos. HashSet usa internamente um HashMap objeto para armazenar objetos.
Usos Prefiro sempre quando não mantemos o singularidade . É usado quando precisamos manter o singularidade De dados.
Exemplo {a->4, b->9, c->5} Onde a, b, c são chaves e 4, 9, 5 são valores associado à chave. {6, 43, 2, 90, 4} Denota um conjunto.

Vamos entender as diferenças por meio de programas.

Exemplo de HashMap

No exemplo a seguir, quando adicionamos um elemento duplicado com a mesma chave e valor diferente, o valor anterior da chave é substituído pelo novo valor.

Quando adicionamos um elemento duplicado com a mesma chave e o mesmo valor, o par chave-valor não é armazenado pela segunda vez.

tutoriais java
 import java.util.*; public class HashMapExample { public static void main(String args[]) { //creating object of HashMap HashMap hm= new HashMap(); //adding key-value pair hm.put('John', 23); hm.put('Monty', 27 ); hm.put('Richard', 21); hm.put('Devid', 19); System.out.println('Before adding duplicate keys: '); System.out.println(hm); //adding duplicate keys hm.put('Monty', 25); //replace the Monty's previous age hm.put('Devid', 19); System.out.println('After adding duplicate keys: '); System.out.println(hm); } } 

Saída:

Diferença entre as classes HashSet e HashMap em Java

Exemplo de HashSet

No exemplo a seguir, podemos ver que os valores duplicados não são armazenados no HashSet e o valor nulo é armazenado apenas uma vez.

 import java.util.*; public class HashSetExample { public static void main(String args[]) { //creating object of HashSet HashSet hs= new HashSet(); //adding values to HashSet hs.add('Java'); hs.add('Python'); hs.add('C++'); hs.add('C'); System.out.println('Before adding duplicate and null values: '); System.out.println(hs); //adding duplicate values hs.add('Python'); hs.add('C'); System.out.println('After adding duplicate values: '); System.out.println(hs); //adding null values hs.add(null); hs.add(null); System.out.println('After adding null values: '); System.out.println(hs); } } 

Saída:

Diferença entre as classes HashSet e HashMap em Java