Java HashMap (com exemplos)

Neste tutorial, aprenderemos sobre a classe Java HashMap e suas várias operações com a ajuda de exemplos.

A HashMapclasse da estrutura de coleções Java fornece a funcionalidade da estrutura de dados da tabela de hash.

Ele armazena elementos em pares de chave / valor . Aqui, as chaves são identificadores exclusivos usados ​​para associar cada valor em um mapa.

A HashMapclasse implementa a interface Map.

Implementação Java HashMap

Crie um HashMap

Para criar um mapa hash, devemos importar o java.util.HashMappacote primeiro. Depois de importar o pacote, aqui está como podemos criar hashmaps em Java.

 // hashMap creation with 8 capacity and 0.6 load factor HashMap numbers = new HashMap();

No código acima, criamos um hashmap denominado números. Aqui, K representa o tipo de chave e V representa o tipo de valores. Por exemplo,

 HashMap numbers = new HashMap();

Aqui, o tipo de chave é Stringe o tipo de valor é Integer.

Exemplo 1: Criar HashMap em Java

 import java.util.HashMap; class Main ( public static void main(String() args) ( // create a hashmap HashMap languages = new HashMap(); // add elements to hashmap languages.put("Java", 8); languages.put("JavaScript", 1); languages.put("Python", 3); System.out.println("HashMap: " + languages); ) )

Resultado

 HashMap: (Java = 8, JavaScript = 1, Python = 3)

No exemplo acima, criamos um HashMapidioma nomeado.

Aqui, usamos o put()método para adicionar elementos ao hashmap. Aprenderemos mais sobre o put()método posteriormente neste tutorial.

Operações básicas em Java HashMap

A HashMapclasse fornece vários métodos para realizar diferentes operações em hashmaps. Veremos algumas operações arraylist comumente usadas neste tutorial:

  • Adicionar elementos
  • Elementos de acesso
  • Elementos de mudança
  • Remover elementos

1. Adicionar elementos a um HashMap

Para adicionar um único elemento ao hashmap, usamos o put()método da HashMapclasse. Por exemplo,

 import java.util.HashMap; class Main ( public static void main(String() args) ( // create a hashmap HashMap numbers = new HashMap(); System.out.println("Initial HashMap: " + numbers); // put() method to add elements numbers.put("One", 1); numbers.put("Two", 2); numbers.put("Three", 3); System.out.println("HashMap after put(): " + numbers); ) )

Resultado

 HashMap inicial: () HashMap após put (): (Um = 1, Dois = 2, Três = 3)

No exemplo acima, criamos HashMapnúmeros nomeados. Aqui, usamos o put()método para adicionar elementos a números.

Observe a declaração,

 numbers.put("One", 1);

Aqui, estamos passando o Stringvalor One como a chave e o Integervalor 1 como o valor para o put()método.

Leituras Recomendadas

  • Java HashMap put ()
  • Java HashMap putAll ()
  • Java HashMap putIfAbsent ()

2. Acesse os elementos HashMap

Podemos usar o get()método para acessar o valor do hashmap. Por exemplo,

 import java.util.HashMap; class Main ( public static void main(String() args) ( HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("HashMap: " + languages); // get() method to get value String value = languages.get(1); System.out.println("Value at index 1: " + value); ) )

Resultado

 HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Valor no índice 1: Java

No exemplo acima, observe a expressão,

 languages.get(1);

Aqui, o get()método pega a chave como seu argumento e retorna o valor correspondente associado à chave.

Nós também pode acessar as chaves , valores e chave / valor pares do hashmap como vistas definido usando keySet(), values()e entrySet()métodos respectivamente. Por exemplo,

 import java.util.HashMap; class Main ( public static void main(String() args) ( HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("HashMap: " + languages); // return set view of keys // using keySet() System.out.println("Keys: " + languages.keySet()); // return set view of values // using values() System.out.println("Values: " + languages.values()); // return set view of key/value pairs // using entrySet() System.out.println("Key/Value mappings: " + languages.entrySet()); ) )

Resultado

 HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Chaves: (1, 2, 3) Valores: (Java, Python, JavaScript) Mapeamentos de chave / valor: (1 = Java, 2 = Python, 3 = JavaScript )

No exemplo acima, criamos um hashmap denominado linguagens. Aqui, estamos acessando as chaves , valores e mapeamentos de chave / valor do hashmap.

Leituras Recomendadas

  • Java HashMap get ()
  • Java Hashmap getOrDefault ()
  • Java HashMap keySet ()
  • Valores de HashMap Java ()
  • EntrySet Java HashMap ()

3. Altere o valor do HashMap

Podemos usar o replace()método para alterar o valor associado a uma chave em um hashmap. Por exemplo,

 import java.util.HashMap; class Main ( public static void main(String() args) ( HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("Original HashMap: " + languages); // change element with key 2 languages.replace(2, "C++"); System.out.println("HashMap using replace(): " + languages); ) )

Resultado

 HashMap original: (1 = Java, 2 = Python, 3 = JavaScript) HashMap usando replace (): (1 = Java, 2 = C ++, 3 = JavaScript)

No exemplo acima, criamos um hashmap denominado linguagens. Observe a expressão,

 languages.replace(2, "C++");

Aqui, estamos alterando o valor referido pela chave 2 com o novo valor C ++.

A HashMapclasse também fornece algumas variações do replace()método. Para saber mais, visite

  • Substituir Java HashMap ()
  • HashMap de Java replaceAll ()

4. Remova os elementos HashMap

Para remover elementos de um hashmap, podemos usar o método remove (). Por exemplo,

 import java.util.HashMap; class Main ( public static void main(String() args) ( HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("HashMap: " + languages); // remove element associated with key 2 String value = languages.remove(2); System.out.println("Removed value: " + value); System.out.println("Updated HashMap: " + languages); ) )

Resultado

 HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Valor removido: Python atualizado HashMap: (1 = Java, 3 = JavaScript)

Aqui, o remove()método usa a chave como parâmetro. Em seguida, ele retorna o valor associado à chave e remove a entrada .

Também podemos remover a entrada somente sob certas condições. Por exemplo,

 remove(2, "C++");

Here, the remove() method only removes the entry if the key 2 is associated with the value C++. Since 2 is not associated with C++, it doesn't remove the entry.

To learn more, visit Java HashMap remove().

Other Methods of HashMap

Method Description
clear() removes all mappings from the HashMap
compute() computes a new value for the specified key
computeIfAbsent() computes value if a mapping for the key is not present
computeIfPresent() computes a value for mapping if the key is present
merge() merges the specified mapping to the HashMap
clone() makes the copy of the HashMap
containsKey() checks if the specified key is present in Hashmap
containsValue() checks if Hashmap contains the specified value
size() returns the number of items in HashMap
isEmpty() checks if the Hashmap is empty

Iterate through a HashMap

To iterate through each entry of the hashmap, we can use Java for-each loop. We can iterate through keys only, vales only, and key/value mapping. For example,

 import java.util.HashMap; import java.util.Map.Entry; class Main ( public static void main(String() args) ( // create a HashMap HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("HashMap: " + languages); // iterate through keys only System.out.print("Keys: "); for (Integer key : languages.keySet()) ( System.out.print(key); System.out.print(", "); ) // iterate through values only System.out.print("Values: "); for (String value : languages.values()) ( System.out.print(value); System.out.print(", "); ) // iterate through key/value entries System.out.print("Entries: "); for (Entry entry : languages.entrySet()) ( System.out.print(entry); System.out.print(", "); ) ) )

Output

 HashMap: (1=Java, 2=Python, 3=JavaScript) Keys: 1, 2, 3, Values: Java, Python, JavaScript, Entries: 1=Java, 2=Python, 3=JavaScript,

Note that we have used the Map.Entry in the above example. It is the nested class of the Map interface that returns a view (elements) of the map.

We first need to import the java.util.Map.Entry package in order to use this class.

This nested class returns a view (elements) of the map.

Creating HashMap from Other Maps

In Java, we can also create a hashmap from other maps. For example,

 import java.util.HashMap; import java.util.TreeMap; class Main ( public static void main(String() args) ( // create a treemap TreeMap evenNumbers = new TreeMap(); evenNumbers.put("Two", 2); evenNumbers.put("Four", 4); System.out.println("TreeMap: " + evenNumbers); // create hashmap from the treemap HashMap numbers = new HashMap(evenNumbers); numbers.put("Three", 3); System.out.println("HashMap: " + numbers); ) )

Output

 TreeMap: (Four=4, Two=2) HashMap: (Two=2, Three=3, Four=4)

In the above example, we have created a TreeMap named evenNumbers. Notice the expression,

 numbers = new HashMap(evenNumbers)

Here, we are creating a HashMap named numbers using the TreeMap. To learn more about treemap, visit Java TreeMap.

Note: While creating a hashmap, we can include optional parameters: capacity and load factor. For example,

 HashMap numbers = new HashMap(8, 0.6f);

Here,

  • 8 (capacity is 8) - This means it can store 8 entries.
  • 0.6f (load factor is 0.6) - This means whenever our hash table is filled by 60%, the entries are moved to a new hash table double the size of the original hash table.

Se os parâmetros opcionais não forem usados, a capacidade padrão será 16 e o fator de carga padrão será 0,75 .

Artigos interessantes...