Java HashMap (con ejemplos)

En este tutorial, aprenderemos sobre la clase Java HashMap y sus diversas operaciones con la ayuda de ejemplos.

La HashMapclase del marco de colecciones de Java proporciona la funcionalidad de la estructura de datos de la tabla hash.

Almacena elementos en pares clave / valor . Aquí, las claves son identificadores únicos que se utilizan para asociar cada valor en un mapa.

La HashMapclase implementa la interfaz Map.

Implementación de Java HashMap

Crea un HashMap

Para crear un mapa hash, java.util.HashMapprimero debemos importar el paquete. Una vez que importamos el paquete, así es como podemos crear hashmaps en Java.

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

En el código anterior, hemos creado un mapa hash llamado números. Aquí, K representa el tipo de clave y V representa el tipo de valores. Por ejemplo,

 HashMap numbers = new HashMap();

Aquí, el tipo de claves es Stringy el tipo de valores es Integer.

Ejemplo 1: crear HashMap en 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); ) )

Salida

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

En el ejemplo anterior, hemos creado HashMapidiomas con nombre.

Aquí, hemos utilizado el put()método para agregar elementos al mapa hash. Aprenderemos más sobre el put()método más adelante en este tutorial.

Operaciones básicas en Java HashMap

La HashMapclase proporciona varios métodos para realizar diferentes operaciones en hashmaps. En este tutorial veremos algunas operaciones de listas de matrices de uso común:

  • Agregar elementos
  • Elementos de acceso
  • Cambiar elementos
  • Quitar elementos

1. Agrega elementos a un HashMap

Para agregar un solo elemento al mapa hash, usamos el put()método de la HashMapclase. Por ejemplo,

 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); ) )

Salida

 HashMap inicial: () HashMap después de put (): (Uno = 1, Dos = 2, Tres = 3)

En el ejemplo anterior, hemos creado HashMapnúmeros con nombre. Aquí, hemos utilizado el put()método para agregar elementos a los números.

Note la declaración,

 numbers.put("One", 1);

Aquí, pasamos el Stringvalor Uno como clave y el Integervalor 1 como valor del put()método.

Lecturas recomendadas

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

2. Accede a los elementos de HashMap

Podemos usar el get()método para acceder al valor del hashmap. Por ejemplo,

 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); ) )

Salida

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

En el ejemplo anterior, observe la expresión,

 languages.get(1);

Aquí, el get()método toma la clave como argumento y devuelve el valor correspondiente asociado con la clave.

También podemos acceder a las claves , los valores y clave / valor pares de la HashMap como vistas de conjunto utilizando keySet(), values()y entrySet()métodos respectivamente. Por ejemplo,

 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()); ) )

Salida

 HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Claves: (1, 2, 3) Valores: (Java, Python, JavaScript) Asignaciones clave / valor: (1 = Java, 2 = Python, 3 = JavaScript )

En el ejemplo anterior, hemos creado un mapa de hash llamado languages. Aquí, estamos accediendo a las claves , valores y asignaciones clave / valor del mapa hash.

Lecturas recomendadas

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

3. Cambiar el valor de HashMap

Podemos usar el replace()método para cambiar el valor asociado con una clave en un mapa hash. Por ejemplo,

 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); ) )

Salida

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

En el ejemplo anterior, hemos creado un mapa hash llamado languages. Note la expresión,

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

Aquí, estamos cambiando el valor al que se refiere la tecla 2 con el nuevo valor C ++.

La HashMapclase también proporciona algunas variaciones del replace()método. Para obtener más información, visite

  • Java HashMap replace ()
  • Java HashMap replaceAll ()

4. Eliminar elementos de HashMap

Para eliminar elementos de un mapa de hash, podemos usar el método remove (). Por ejemplo,

 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); ) )

Salida

 HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Valor eliminado: Python actualizado HashMap: (1 = Java, 3 = JavaScript)

Aquí, el remove()método toma la clave como parámetro. Luego devuelve el valor asociado con la clave y elimina la entrada .

También podemos eliminar la entrada solo bajo ciertas condiciones. Por ejemplo,

 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.

Si no se utilizan los parámetros opcionales, la capacidad predeterminada será 16 y el factor de carga predeterminado será 0,75 .

Articulos interesantes...