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. | Há 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:
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: