Diferença entre HashSet e HashMap

Neste artigo vamos discutir as diferenças entre as classes HashSet e HashMap.

HashSet vs HashMap

Diferenças:

HashSet HashMap
A classe HashSet implementa a interface Set A classe HashMap implementa a interface Map
No HashSet armazenamos objectos(elementos ou valores) e.g. Se tivermos um HashSet de elementos de string então ele poderia representar um conjunto de elementos HashSet: {“Hello”, “Hi”, “Bye”, “Run”} HashMap é usado para armazenar a chave & pares de valores. Em resumo, ele mantém o mapeamento da chave & valor (A classe HashMap é mais ou menos equivalente a Hashtable, exceto que ela é dessincronizada e permite nulls). Isto é como você poderia representar elementos HashMap se ela tiver chave inteira e valor do tipo String: e.g. {1->”Hello”, 2->”Hi”, 3->”Bye”, 4->”Run”}
HashSet não permite elementos duplicados, o que significa que você não pode armazenar valores duplicados no HashSet. HashMap não permite chaves duplicadas, no entanto, ele permite ter valores duplicados.
HashSet permite ter um único valor nulo. HashMap permite uma única chave nula e qualquer número de valores nulos.

Similarities:
1) Tanto HashMap como HashSet não estão sincronizados, o que significa que não são adequados para unidades de operações thread-safe, a menos que estejam explicitamente sincronizados. Isto é como você pode sincronizá-los explicitamente:
HashSet:

Set s = Collections.synchronizedSet(new HashSet(...));

HashMap:

 Map m = Collections.synchronizedMap(new HashMap(...));

2) Ambas as classes não garantem que a ordem de seus elementos permanecerá constante ao longo do tempo.

3) Se você olhar para o código fonte do HashSet, então você pode descobrir que ele é apoiado por um HashMap. Assim, basicamente ele usa internamente um HashMap para todas as suas operações.

4) Ambos fornecem desempenho em tempo constante para operações básicas como adição, remoção de elementos etc.

HashSet exemplo

import java.util.HashSet;class HashSetDemo{ public static void main(String args) { // Create a HashSet HashSet<String> hset = new HashSet<String>(); //add elements to HashSet hset.add("AA"); hset.add("BB"); hset.add("CC"); hset.add("DD"); // Displaying HashSet elements System.out.println("HashSet contains: "); for(String temp : hset){ System.out.println(temp); } }}

Saída:

HashSet contains: AABBCCDD

HashMap exemplo

import java.util.HashMap;class HashMapDemo{ public static void main(String args) { // Create a HashMap HashMap<Integer, String> hmap = new HashMap<Integer, String>(); //add elements to HashMap hmap.put(1, "AA"); hmap.put(2, "BB"); hmap.put(3, "CC"); hmap.put(4, "DD"); // Displaying HashMap elements System.out.println("HashMap contains: "+hmap); }}

Saída:

HashMap contains: {1=AA, 2=BB, 3=CC, 4=DD}

Leave a Reply