HashMap almacena los datos en pares (Clave, Valor), y puede acceder a ellos mediante un índice de otro tipo. La clase HashMap implementa la interfaz Map que nos permite almacenar la clave. hashMap es una parte del marco de colecciones de Java desde Java 1.2. Utiliza internamente una técnica de hash que es bastante rápida.
Sintaxis:
public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Clonnable, Serial
Diferentes formas de atravesar
Podemos iterar sobre el mapeo que es clave y pares de valores que se enumeran a continuación que se describen más adelante de la siguiente manera:
Métodos:
- Usando un iterador
- Uso de bucle for mejorado (bucle for-each)
- Usando el método forEach()
Método 1: usar un iterador
Iterator es una interfaz en el paquete java.util que se usa para iterar a través de una colección. Como tal, no hay nada especial para discutir los iteradores, por lo que propondremos métodos de la interfaz Iterator que se han utilizado para atravesar HashMap.
- hm.entrySet() se usa para recuperar todos los pares clave-valor llamados Map.Entries y se almacena internamente en un conjunto.
- hm.entrySet().iterator() devuelve un iterador que actúa como un cursor y apunta al primer elemento del conjunto y continúa hasta el final.
- hmIterator.hasNext() busca el siguiente elemento en el conjunto y devuelve un booleano
- hmIterator.next() devuelve el siguiente elemento (Map.Entry) del conjunto.
- mapElement.getKey() devuelve la clave del Map.Entry asociado
- mapElement.getValue() devuelve el valor del Map.Entry asociado
Ejemplo:
Java
// Java Program to Traverse through HashMap // Using Iterator // Importing required classes import java.util.*; // Main class class GFG { // Main driver method public static void main(String[] args) { // Creating an Hashmap of string-integer pairs // It contains student name and their marks HashMap<String, Integer> hm = new HashMap<String, Integer>(); // Adding mappings to above HashMap // using put() method hm.put("GeeksforGeeks", 54); hm.put("A computer portal", 80); hm.put("For geeks", 82); // Printing all elements of HashMap System.out.println("Created hashmap is" + hm); // Getting an iterator Iterator hmIterator = hm.entrySet().iterator(); // Display message only System.out.println( "HashMap after adding bonus marks:"); // Iterating through Hashmap and // adding some bonus marks for every student while (hmIterator.hasNext()) { Map.Entry mapElement = (Map.Entry)hmIterator.next(); int marks = ((int)mapElement.getValue() + 10); // Printing mark corresponding to string entries System.out.println(mapElement.getKey() + " : " + marks); } } }
Created hashmap is{GeeksforGeeks=54, A computer portal=80, For geeks=82} HashMap after adding bonus marks: GeeksforGeeks : 64 A computer portal : 90 For geeks : 92
Método 2: Usar bucle for-each
Ejemplo:
Java
// Java program for Traversing through HashMap // Using for-each Loop // Importing required classes import java.util.*; // Main class class GFG { // Main driver method public static void main(String[] args) { // creating an empty HashMap of string and integer // pairs Mappings denotes Student name and marks HashMap<String, Integer> hm = new HashMap<String, Integer>(); // Adding mappings to HashMap // using put() method hm.put("GeeksforGeeks", 54); hm.put("A computer portal", 80); hm.put("For geeks", 82); // Printing all elements of above Map System.out.println("Created hashmap is" + hm); // Display message only System.out.println( "HashMap after adding bonus marks:"); // Looping through the HashMap // Using for-each loop for (Map.Entry<String,Integer> mapElement : hm.entrySet()) { String key = mapElement.getKey(); // Adding some bonus marks to all the students int value = (mapElement.getValue() + 10); // Printing above marks corresponding to // students names System.out.println(key + " : " + value); } } }
Created hashmap is{GeeksforGeeks=54, A computer portal=80, For geeks=82} HashMap after adding bonus marks: GeeksforGeeks : 64 A computer portal : 90 For geeks : 92
Método 3: Usar el método forEach()
forEach() es un método de HashMap que se introdujo en Java 8. Se usa para iterar a través del hashmap y también reduce el número de líneas de código como se propone a continuación:
Ejemplo:
Java
// Java program for traversing Through HashMap // Using forEach() Method // Importing required classes import java.util.*; // Main class class GFG { // Main driver method public static void main(String[] args) { // Creating an empty HashMap of string-integer // pairs HashMap<String, Integer> hm = new HashMap<String, Integer>(); // Adding mappings to HashMap // using put() method hm.put("GeeksforGeeks", 54); hm.put("A computer portal", 80); hm.put("For geeks", 82); // Printing all elements of above HashMap System.out.println("Created hashmap is" + hm); // Display message only System.out.println( "HashMap after adding bonus marks:"); // Looping through HashMap and adding bonus marks // using HashMap.forEach() hm.forEach((k, v) -> System.out.println(k + " : " + (v + 10))); } }
Created hashmap is{GeeksforGeeks=54, A computer portal=80, For geeks=82} HashMap after adding bonus marks: GeeksforGeeks : 64 A computer portal : 90 For geeks : 92