Java HashMap class implementa a interface Map que nos permite para armazenar par de chave e valor , onde as chaves devem ser exclusivas. Se você tentar inserir a chave duplicada, ela substituirá o elemento da chave correspondente. É fácil realizar operações usando o índice chave como atualização, exclusão, etc. A classe HashMap é encontrada nojava.utilpacote.
HashMap em Java é como a classe Hashtable legada, mas não é sincronizado. Também nos permite armazenar os elementos nulos, mas deve haver apenas uma chave nula. Desde Java 5, é denotado comoHashMap, onde K significa chave e V significa valor. Ele herda a classe AbstractMap e implementa a interface Map.
Pontos para lembrar
- Java HashMap contém valores baseados na chave.
- Java HashMap contém apenas chaves exclusivas.
- Java HashMap pode ter uma chave nula e vários valores nulos.
- Java HashMap não está sincronizado.
- Java HashMap não mantém ordem.
- A capacidade padrão inicial da classe Java HashMap é 16 com um fator de carga de 0,75.
Hierarquia da classe HashMap
Conforme mostrado na figura acima, a classe HashMap estende a classe AbstractMap e implementa a interface Map.
Declaração de classe HashMap
Vamos ver a declaração da classe java.util.HashMap.
código c abs
public class HashMap extends AbstractMap implements Map, Cloneable, Serializable
Parâmetros da classe HashMap
Vamos ver os parâmetros da classe java.util.HashMap.
Construtores da classe Java HashMap
Construtor | Descrição |
---|---|
HashMap() | É usado para construir um HashMap padrão. |
HashMap(Mapa m) | É usado para inicializar o mapa hash usando os elementos do objeto Map fornecido m. |
HashMap (capacidade interna) | É usado para inicializar a capacidade do mapa hash para um determinado valor inteiro, capacidade. |
HashMap(int capacidade, float loadFactor) | É usado para inicializar a capacidade e o fator de carga do mapa hash usando seus argumentos. |
Métodos da classe Java HashMap
Método | Descrição |
---|---|
vazio claro() | É usado para remover todos os mapeamentos deste mapa. |
booleano isEmpty() | É usado para retornar verdadeiro se este mapa não contiver mapeamentos de valores-chave. |
Clone de objeto() | É usado para retornar uma cópia superficial desta instância HashMap: as chaves e os valores em si não são clonados. |
Definir entradaSet() | É usado para retornar uma visão de coleção dos mapeamentos contidos neste mapa. |
Definir keySet() | É usado para retornar uma visão definida das chaves contidas neste mapa. |
V colocar (chave do objeto, valor do objeto) | É usado para inserir uma entrada no mapa. |
void putAll (mapa do mapa) | É usado para inserir o mapa especificado no mapa. |
V putIfAbsent(chave K, valor V) | Ele insere o valor especificado com a chave especificada no mapa somente se ainda não estiver especificado. |
V remover (chave do objeto) | É usado para excluir uma entrada para a chave especificada. |
remoção booleana (chave do objeto, valor do objeto) | Ele remove os valores especificados com as chaves especificadas associadas do mapa. |
V computar (tecla K, função de remapeamento BiFunction) | É usado para calcular um mapeamento para a chave especificada e seu valor mapeado atual (ou nulo se não houver mapeamento atual). |
V computaIfAbsent (tecla K, função de mapeamentoFunction) | É usado para calcular seu valor usando a função de mapeamento fornecida, se a chave especificada ainda não estiver associada a um valor (ou estiver mapeada para nulo) e inseri-la neste mapa, a menos que seja nula. |
V computaIfPresent (tecla K, função de remapeamento BiFunction) | É usado para calcular um novo mapeamento dada a chave e seu valor mapeado atual se o valor da chave especificada estiver presente e não for nulo. |
booleano contémValue (valor do objeto) | Este método retorna verdadeiro se algum valor igual ao valor existir no mapa, caso contrário, retorna falso. |
booleano contémKey (chave do objeto) | Este método retorna verdadeiro se alguma chave igual à chave existir no mapa, caso contrário, retorna falso. |
booleano é igual (objeto o) | É usado para comparar o objeto especificado com o mapa. |
void forEach (ação BiConsumer) | Ele executa a ação especificada para cada entrada no mapa até que todas as entradas tenham sido processadas ou a ação gere uma exceção. |
V get (chave do objeto) | Este método retorna o objeto que contém o valor associado à chave. |
V getOrDefault (chave do objeto, V defaultValue) | Ele retorna o valor para o qual a chave especificada está mapeada ou defaultValue se o mapa não contiver nenhum mapeamento para a chave. |
booleano isEmpty() | Este método retorna verdadeiro se o mapa estiver vazio; retorna falso se contiver pelo menos uma chave. |
Mesclagem V (chave K, valor V, função de remapeamento BiFunction) | Se a chave especificada ainda não estiver associada a um valor ou estiver associada a nulo, associa-a ao valor não nulo fornecido. |
Substituição V (tecla K, valor V) | Ele substitui o valor especificado por uma chave especificada. |
substituição booleana (tecla K, V oldValue, V newValue) | Ele substitui o valor antigo pelo novo valor de uma chave especificada. |
void replaceAll (função BiFunction) | Ele substitui o valor de cada entrada pelo resultado da invocação de uma determinada função naquela entrada até que todas as entradas tenham sido processadas ou a função gere uma exceção. |
Valores de coleção() | Ele retorna uma visão de coleção dos valores contidos no mapa. |
tamanho interno() | Este método retorna o número de entradas no mapa. |
Exemplo de HashMap Java
Vamos ver um exemplo simples de HashMap para armazenar pares de chave e valor.
import java.util.*; public class HashMapExample1{ public static void main(String args[]){ HashMap map=new HashMap();//Creating HashMap map.put(1,'Mango'); //Put elements in Map map.put(2,'Apple'); map.put(3,'Banana'); map.put(4,'Grapes'); System.out.println('Iterating Hashmap...'); for(Map.Entry m : map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } }Teste agora
Iterating Hashmap... 1 Mango 2 Apple 3 Banana 4 Grapes
Neste exemplo, estamos armazenando Integer como chave e String como valor, então estamos usandoHashMapcomo o tipo. Ocolocar()método insere os elementos no mapa.
Para obter os elementos chave e valor, devemos chamar os métodos getKey() e getValue(). OEntrada do mapainterface contém o getKey() e Obter valor() métodos. Porém, devemos chamar o método entrySet() da interface Map para obter a instância de Map.Entry.
Nenhuma chave duplicada no HashMap
Você não pode armazenar chaves duplicadas no HashMap. No entanto, se você tentar armazenar uma chave duplicada com outro valor, ela substituirá o valor.
import java.util.*; public class HashMapExample2{ public static void main(String args[]){ HashMap map=new HashMap();//Creating HashMap map.put(1,'Mango'); //Put elements in Map map.put(2,'Apple'); map.put(3,'Banana'); map.put(1,'Grapes'); //trying duplicate key System.out.println('Iterating Hashmap...'); for(Map.Entry m : map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } }Teste agora
Iterating Hashmap... 1 Grapes 2 Apple 3 Banana
Exemplo Java HashMap para elementos add()
Aqui vemos diferentes maneiras de inserir elementos.
import java.util.*; class HashMap1{ public static void main(String args[]){ HashMap hm=new HashMap(); System.out.println('Initial list of elements: '+hm); hm.put(100,'Amit'); hm.put(101,'Vijay'); hm.put(102,'Rahul'); System.out.println('After invoking put() method '); for(Map.Entry m:hm.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } hm.putIfAbsent(103, 'Gaurav'); System.out.println('After invoking putIfAbsent() method '); for(Map.Entry m:hm.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } HashMap map=new HashMap(); map.put(104,'Ravi'); map.putAll(hm); System.out.println('After invoking putAll() method '); for(Map.Entry m:map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } }
Initial list of elements: {} After invoking put() method 100 Amit 101 Vijay 102 Rahul After invoking putIfAbsent() method 100 Amit 101 Vijay 102 Rahul 103 Gaurav After invoking putAll() method 100 Amit 101 Vijay 102 Rahul 103 Gaurav 104 Ravi
Exemplo Java HashMap para elementos remove()
Aqui vemos diferentes maneiras de remover elementos.
import java.util.*; public class HashMap2 { public static void main(String args[]) { HashMap map=new HashMap(); map.put(100,'Amit'); map.put(101,'Vijay'); map.put(102,'Rahul'); map.put(103, 'Gaurav'); System.out.println('Initial list of elements: '+map); //key-based removal map.remove(100); System.out.println('Updated list of elements: '+map); //value-based removal map.remove(101); System.out.println('Updated list of elements: '+map); //key-value pair based removal map.remove(102, 'Rahul'); System.out.println('Updated list of elements: '+map); } }
Saída:
Initial list of elements: {100=Amit, 101=Vijay, 102=Rahul, 103=Gaurav} Updated list of elements: {101=Vijay, 102=Rahul, 103=Gaurav} Updated list of elements: {102=Rahul, 103=Gaurav} Updated list of elements: {103=Gaurav}
Exemplo Java HashMap para elementos replace()
Aqui, vemos diferentes maneiras de substituir elementos.
import java.util.*; class HashMap3{ public static void main(String args[]){ HashMap hm=new HashMap(); hm.put(100,'Amit'); hm.put(101,'Vijay'); hm.put(102,'Rahul'); System.out.println('Initial list of elements:'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } System.out.println('Updated list of elements:'); hm.replace(102, 'Gaurav'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } System.out.println('Updated list of elements:'); hm.replace(101, 'Vijay', 'Ravi'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } System.out.println('Updated list of elements:'); hm.replaceAll((k,v) -> 'Ajay'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } } }
Initial list of elements: 100 Amit 101 Vijay 102 Rahul Updated list of elements: 100 Amit 101 Vijay 102 Gaurav Updated list of elements: 100 Amit 101 Ravi 102 Gaurav Updated list of elements: 100 Ajay 101 Ajay 102 Ajay
Diferença entre HashSet e HashMap
HashSet contém apenas valores, enquanto HashMap contém uma entrada (chave e valor).
Exemplo Java HashMap: Livro
import java.util.*; class Book { int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } } public class MapExample { public static void main(String[] args) { //Creating map of Books Map map=new HashMap(); //Creating Books Book b1=new Book(101,'Let us C','Yashwant Kanetkar','BPB',8); Book b2=new Book(102,'Data Communications & Networking','Forouzan','Mc Graw Hill',4); Book b3=new Book(103,'Operating System','Galvin','Wiley',6); //Adding Books to map map.put(1,b1); map.put(2,b2); map.put(3,b3); //Traversing map for(Map.Entry entry:map.entrySet()){ int key=entry.getKey(); Book b=entry.getValue(); System.out.println(key+' Details:'); System.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); } } }Teste agora
Saída:
1 Details: 101 Let us C Yashwant Kanetkar BPB 8 2 Details: 102 Data Communications and Networking Forouzan Mc Graw Hill 4 3 Details: 103 Operating System Galvin Wiley 6
Tópicos relacionados
Como classificar HashMap em Java
Fator de carga no HashMap
Funcionamento do HashMap em Java | Como funciona o HashMap
Diferença entre HashMap e Hashtable
Como classificar HashMap por valor
flip-flop
Diferença entre HashSet e HashMap