Com a classe Java HashMaps, é possível guardar dados em pares chave-valor. Isso não só facilita a re­cu­pe­ra­ção e a ma­nu­ten­ção de uma lista, mas também oferece inúmeras opções de acesso. Apre­sen­ta­re­mos os métodos mais im­por­tan­tes.

O que são HashMaps em Java?

Existem di­fe­ren­tes métodos para armazenar e recuperar dados. De­pen­dendo do uso que se deseja dar, usar um ou outro tipo de ar­ma­ze­na­mento pode ser mais con­ve­ni­ente. Em muitos casos, optar pela classe HashMap do Java pode ser a melhor solução. Ao contrário de outros métodos, esta classe armazena os dados como pares chave-valor, ou seja, a cada chave é atribuído exa­ta­mente um valor. Para recuperar o valor, basta usar a chave cor­res­pon­dente. As chaves e os valores podem ser tipos de dados muito di­fe­ren­tes, como cadeias, números ou outros objetos.

A classe HashMap do Java tem, portanto, várias vantagens. Em primeiro lugar, permite realizar uma pesquisa rápida dentro da estrutura da linguagem de pro­gra­ma­ção. Ao mesmo tempo, a abordagem chave-valor evita que uma mesma chave receba vários valores e , dessa forma, evita-se a du­pli­ca­ção. Apenas os objetos podem ser incluídos várias vezes com chaves di­fe­ren­tes. No que diz respeito ao de­sem­pe­nho, este tipo de ar­ma­ze­na­mento e pesquisa também é vantajoso quando comparado, por exemplo, com listas rígidas, que são muito menos flexíveis. Por isso, as bases de dados chave-valor seguem este princípio. A seguir, descubra como criar HashMaps em Java e utilizá-los para os seus fins.

Como são criados?

Para criar um novo HashMap em Java, primeiro é ne­ces­sá­rio importar a classe. Para isso, use o comando Java import. Em seguida, pode criar o mapa. Para isso, escreva:

import java.util.HashMap;
HashMap<String, String> nameDerHashMap = new HashMap<String, String> ();
java

Os dois tipos de dados, separados por uma vírgula (neste caso, String, String), são a chave e o valor.

Criar um novo HashMap em Java

Para mostrar melhor o fun­ci­o­na­mento do Hashmap em Java, apre­sen­ta­mos um caso prático: uma empresa deseja guardar uma lista de clientes que possa consultar a qualquer momento. É ne­ces­sá­rio, por um lado, o nome do cliente e, por outro, um número de cliente. Embora o número de cliente (que cor­res­ponde à chave) seja sempre único, em teoria poderia haver vários clientes com o mesmo nome (que seria ar­ma­ze­nado como valor). O número é ar­ma­ze­nado como inteiro e os nomes como strings. Em Java, o HashMap ficaria assim:

import java.util.HashMap;
public clase Main {
public static void main(String[] args) {
	HashMap<Integer, String> lista de clientes = new HashMap<>();
	}
}
java

Incluir elementos

Embora já tenha o HashMap do Java, ele está vazio. Para adicionar novos pares chave-valor, use o método put(). Veja o exemplo a seguir:

public clase Main {
public static void main(String[] args) {
	HashMap<Integer, String> lista de clientes = new HashMap<>();
	lista de clientes.put (1077, "Manolo Rodríguez");
	lista de clientes.put (15312, "Pepe García");
	lista de clientes.put (73329, "María Pérez");
	System.out.println(kundenliste);
	}
}
java

Com o comando System.out.println, é impressa a lista de clientes:

{1077=Manolo Rodríguez, 15312=Pepe García, 73329=María Pérez}
java

Acesso aos elementos

Embora já exista uma lista de clientes à qual, te­o­ri­ca­mente, podem ser adi­ci­o­na­das muitas mais entradas, também pode querer aceder a um cliente in­di­vi­dual. Para tal, aplique o método get() à chave cor­res­pon­dente. Ficaria assim:

public clase Main {
public static void main(String[] args) {
	HashMap<Integer, String> lista de clientes = new HashMap<>();
	lista de clientes.put (1077, " Manolo Rodríguez");
	lista de clientes.put (15312, "Pepe García");
	lista de clientes.put (73329, "María Pérez");
	System.out.println(lista de clientes.get(1077));
	}
}
java

Como resultado, apenas «Manolo Rodríguez» deve aparecer.

Eliminar uma ou todas as entradas

Se desejar eliminar uma entrada es­pe­cí­fica, utilize o método remove(). Para colocá-lo em prática, siga o exemplo:

public clase Main {
public static void main(String[] args) {
	HashMap<Integer, String> lista de clientes = new HashMap<>();
	lista de clientes.put (1077, " Manolo Rodríguez");
	lista de clientes.put (15312, "Pepe García");
	lista de clientes.put (73329, "María Pérez");
	lista de clientes.remove(1077);
	System.out.println(lista de clientes);
	}
}
java

Na consola, seria apre­sen­tado:

{15312=Pepe García, 73329=María Pérez}
java

Como al­ter­na­tiva, também pode eliminar toda a lista. Para isso, utilize o método clear(). Veja como ele é aplicado no exemplo:

public clase Main {
public static void main(String[] args) {
	HashMap<Integer, String> lista de clientes = new HashMap<>();
	lista de clientes.put (1077, " Manolo Rodríguez");
	lista de clientes.put (15312, "Pepe García");
	lista de clientes.put (73329, "María Pérez");
	kundenliste.clear();
	System.out.println(lista de clientes);
	}
}
java

Na consola, seria apre­sen­tado o seguinte:

{ }
java

De­ter­mi­nar o número de entradas

Embora o exemplo de HashMap em Java utilizado seja muito simples e, portanto, de­ter­mi­nar o número de entradas não seja um problema, em projetos de maior porte, descobrir o número exato de entradas pode ser mais com­pli­cado. Para isso, pode-se recorrer ao método size(). Veja como ele é utilizado:

public clase Main {
public static void main(String[] args) {
	HashMap<Integer, String> lista de clientes = new HashMap<>();
	lista de clientes.put (1077, " Manolo Rodríguez");
	lista de clientes.put (15312, "Pepe García");
	lista de clientes.put (73329, "María Pérez");
	System.out.println(lista de clientes.size());
	}
}
java

O número 3 seria exibido.

Vi­su­a­li­za­ção de chaves ou valores isolados

Também é possível aceder a uma lista que contenha apenas chaves ou valores. Para isso, é ne­ces­sá­rio recorrer a um loop for-each. Utilize o método keySet() para as chaves e o método values() para os valores. Com este último, o código seria apre­sen­tado da seguinte forma:

public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> lista de clientes = new HashMap<>();
	lista de clientes.put (1077, " Manolo Rodríguez");
	lista de clientes.put (15312, "Pepe García");
	lista de clientes.put (73329, "María Pérez");
	for (String i : lista de clientes.values()) {
		System.out.println(i);
		}
	}
}
java

Os seguintes re­sul­ta­dos seriam apre­sen­ta­dos:

Manolo Rodríguez
Pepe García
María Pérez
java

Verificar a dis­po­ni­bi­li­dade de um item

Não só é possível aceder a uma entrada es­pe­cí­fica, como também é possível verificar se o HashMap do Java contém algum valor ou chave es­pe­cí­fi­cos. Para isso, utilizam-se os métodos con­tains­Key() (para chaves) e con­tains­Va­lue() (para valores). Se o elemento estiver incluído, obtém-se «true». Se o elemento não estiver incluído, o resultado é «false». Na prática, os métodos são im­ple­men­ta­dos como se mostra a seguir:

public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> lista de clientes = new HashMap<>();
	lista de clientes.put (1077, " Manolo Rodríguez");
	lista de clientes.put (15312, "Pepe García");
	lista de clientes.put (73329, "María Pérez");
	System.out.println(lista de clientes.containsKey(15312));
	System.out.println(lista de clientes.containsValue("Ana Martínez");
	}
}
java

Embora a chave «15312» apareça na lista, o valor «Ana Martínez» não aparece, pelo que a consola mostrará como resultado:

true
false
java
Ir para o menu principal