Um HashMap (ou um HashTable) é uma estrutura de dados que permite acesso rápido aos dados usando pares chave-valor. A classe Java HashMap estende a Mapa abstrato class e implementa a interface Map, que dá acesso a muitas operações. HashMaps tem dois parâmetros de tipo—K e V, onde K armazena as chaves e V armazena os valores em cada HashMap.
O HashMap permite mapear chaves para um valor específico e armazenar itens em ordem aleatória. Neste artigo, você aprenderá a usar a classe HashMap do Java para armazenar, recuperar, atualizar e excluir dados.
Criando um HashMap Java
A classe Java HashMap tem quatro construtores. O construtor padrão é o mais popular, ele permite que você crie um HashMap vazio que terá uma capacidade padrão de 16.
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap<Integer, String> fruitsMap = new HashMap<Integer, String>();
}
}
A classe Java acima usa o construtor HashMap padrão para criar uma estrutura de dados chamada frutasMapa. O objeto fruitMap armazenará dados que possuem uma chave inteira e um valor de string. No entanto, como a classe HashMap implementa a interface Map, ela pode armazenar um valor nulo no campo de chave, no campo de valor ou em ambos.
Armazenando dados em um HashMap
Você pode realizar várias operações usando a classe HashMap. o put(chave K, valor V) O método está entre seus métodos mais populares e permite que você armazene dados usando um par chave-valor, onde cada chave é mapeada para um valor.
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap<Integer, String> fruitsMap = new HashMap<Integer, String>();
fruitsMap.put(3,"Pear");
fruitsMap.put(6,"Mango");
fruitsMap.put(7,"Plum");
fruitsMap.put(4,"Apple");
fruitsMap.put(1,"Orange");
fruitsMap.put(5,"Berries");
fruitsMap.put(2,"Melon");
}
}
A classe atualizada acima usa o método put() para adicionar várias frutas e suas chaves à estrutura de dados do FruitMap existente. É importante observar que o código acima adiciona os dados ao mapa aleatoriamente. Esse detalhe se tornará útil quando você começar a ler os dados do HashMap.
Lendo dados de um HashMap
Existem várias maneiras de ler dados de um HashMap. O método que você usa dependerá de como você deseja que os dados apareçam ou até mesmo do tipo de dados que deseja recuperar.
Recuperar o objeto HashMap
Se você deseja recuperar os dados como um objeto, basta acessar o objeto HashMap, que no exemplo abaixo é o fruitMap.
System.out.println(fruitsMap);
Adicionando a linha de código acima à classe Main, imprime a seguinte saída no console:
{1=Orange, 2=Melon, 3=Pear, 4=Apple, 5=Berries, 6=Mango, 7=Plum}
Embora cada valor tenha sido adicionado aleatoriamente ao HashMap, na saída você verá que o HashMap armazena os valores em ordem crescente, com base na chave atribuída a cada valor. Esse é um recurso que coloca o HashMaps à frente de outras estruturas de dados, como a estrutura de dados Array, que suporta apenas armazenamento linear.
Recupere todos os dados individualmente
Se você deseja recuperar todos os dados individualmente, pode usar o por método que permite percorrer o HashMap e imprimir cada valor e sua chave correspondente. Esse método emprega a interface Map que implementa a classe HashMap.
for (HashMap.Entry<Integer, String> fruit : fruitsMap.entrySet())
{
System.out.println("Key: " + fruit.getKey() + " Value: " + fruit.getValue());
}
Adicionar o método acima ao seu código imprimirá a seguinte saída em seu console:
Key: 1 Value: Orange
Key: 2 Value: Melon
Key: 3 Value: Pear
Key: 4 Value: Apple
Key: 5 Value: Berries
Key: 6 Value: Mango
Key: 7 Value: Plum
Recuperar um valor específico
A classe HashMap tem um pegue() método que recebe uma chave e retorna o valor mapeado para essa chave.
System.out.println(fruitsMap.get(4));
A linha de código acima imprime a seguinte saída no console:
Apple
Atualizando dados em um HashMap
Depois de criar e preencher um objeto HashMap, você pode usar o substituir() método para atualizar qualquer item no mapa. O método replace() recebe dois ou três argumentos. O primeiro método replace() pega a chave associada a um item existente, junto com o novo valor que você deseja mapear para ele.
fruitsMap.replace(4, "Grapes");
System.out.print(fruitsMap);
Executando o código acima imprime o seguinte objeto no console:
{1=Orange, 2=Melon, 3=Pear, 4=Grapes, 5=Berries, 6=Mango, 7=Plum}
Como você pode ver no objeto acima, “Grapes” mapeia para 4, que anteriormente mapeava para “Apple”.
O segundo método replace() pega a chave associada ao item existente, o item existente e o valor de substituição.
fruitsMap.replace(4, "Apple", "Grapes");
System.out.print(fruitsMap);
O código acima imprime o seguinte objeto no console:
{1=Orange, 2=Melon, 3=Pear, 4=Grapes, 5=Berries, 6=Mango, 7=Plum}
Excluindo dados de um HashMap
Você pode excluir um item específico do seu HashMap usando o remover() método ou excluir todos os dados usando o Claro() método. O método remove() recebe um ou dois argumentos. O primeiro método remove pega a chave associada ao valor que você deseja remover:
fruitsMap.remove(5);
System.out.println(fruitsMap);
O código acima imprime o seguinte objeto no console:
{1=Orange, 2=Melon, 3=Pear, 4=Apple, 6=Mango, 7=Plum}
O objeto atualizado mostra que o item com o par chave-valor de 5 e “Berries” não faz mais parte do fruitMap. O segundo método remove() recebe uma chave e o valor para o qual ela é mapeada.
fruitsMap.remove(5, "Berries");
System.out.println(fruitsMap);
O código acima também imprime o seguinte objeto no console:
{1=Orange, 2=Melon, 3=Pear, 4=Apple, 6=Mango, 7=Plum}
O método clear() não recebe argumentos e retorna void.
fruitsMap.clear();
System.out.println(fruitsMap);
A execução do código acima imprime o seguinte objeto vazio no console:
{}
Agora você pode executar operações CRUD em um Java HashMap
HashMaps é uma das várias estruturas de dados populares que você precisa conhecer. Este artigo ensina como realizar operações CRUD em Java HashMaps. O HashMap é uma estrutura de dados muito útil, seu principal ponto de venda é que é uma das estruturas de dados mais eficientes, devido à sua velocidade de acesso. No entanto, também é muito conveniente de usar, pois permite armazenamento aleatório.