logo

Funcionamiento de HashMap en Java


¿Qué es el hash?

Es el proceso de convertir un objeto en un valor entero. El valor entero ayuda en la indexación y búsquedas más rápidas.

¿Qué es HashMap?

HashMap es parte del marco de la colección Java. Utiliza una técnica llamada Hashing. Implementa la interfaz del mapa. Almacena los datos en el par de clave y valor. HashMap contiene una matriz de nodos y el nodo se representa como una clase. Utiliza una matriz y una estructura de datos LinkedList internamente para almacenar claves y valores. Hay cuatro campos en HashMap.

Funcionamiento de HashMap en Java

Antes de comprender el funcionamiento interno de HashMap, debe conocer los métodos hashCode() y equals().

Linux cambia el nombre del directorio
    es igual():Comprueba la igualdad de dos objetos. Compara la Clave, sean iguales o no. Es un método de la clase Objeto. Se puede anular. Si anula el método equals(), entonces es obligatorio anular el método hashCode().código hash():Este es el método de la clase de objeto. Devuelve la referencia de memoria del objeto en forma de número entero. El valor recibido del método se utiliza como número de depósito. El número del depósito es la dirección del elemento dentro del mapa. El código hash de la clave nula es 0.Cubos:La matriz del nodo se llama depósitos. Cada nodo tiene una estructura de datos como una LinkedList. Más de un nodo puede compartir el mismo depósito. Puede ser diferente en capacidad.
Funcionamiento de HashMap en Java

Insertar clave, par de valores en HashMap

Usamos el método put() para insertar el par clave y valor en el HashMap. El tamaño predeterminado de HashMap es 16 (0 a 15).

Ejemplo

En el siguiente ejemplo, queremos insertar tres pares (clave, valor) en HashMap.

 HashMap map = new HashMap(); map.put('Aman', 19); map.put('Sunny', 29); map.put('Ritesh', 39); 

Veamos en qué índice se guardará el par clave-valor en HashMap. Cuando llamamos al método put(), calcula el código hash de la clave 'Aman'. Supongamos que el código hash de 'Aman' es 2657860. Para almacenar la clave en la memoria, tenemos que calcular el índice.

Calcular el índice

El índice minimiza el tamaño de la matriz. La fórmula para calcular el índice es:

java comparable
 Index = hashcode(Key) & (n-1) 

Donde n es el tamaño de la matriz. Por tanto, el valor del índice para 'Aman' es:

 Index = 2657860 & (16-1) = 4 

El valor 4 es el valor del índice calculado donde la clave y el valor se almacenarán en HashMap.

Funcionamiento de HashMap en Java

Colisión de hash

Este es el caso cuando el valor del índice calculado es el mismo para dos o más claves. Calculemos el código hash para otra clave 'Sunny'. Supongamos que el código hash de 'Sunny' es 63281940. Para almacenar la clave en la memoria, tenemos que calcular el índice utilizando la fórmula de índice.

 Index=63281940 & (16-1) = 4 

El valor 4 es el valor del índice calculado donde se almacenará la clave en HashMap. En este caso, el método equals() comprueba que ambas claves sean iguales o no. Si las claves son las mismas, reemplace el valor con el valor actual. De lo contrario, conecte este objeto de nodo al objeto de nodo existente a través de LinkedList. Por lo tanto, ambas claves se almacenarán en el índice 4.

Funcionamiento de HashMap en Java

De manera similar, almacenaremos la clave 'Ritesh'. Supongamos que el código hash para la clave es 2349873. El valor del índice será 1. Por lo tanto, esta clave se almacenará en el índice 1.

cadena java contiene
Funcionamiento de HashMap en Java

método get() en HashMap

El método get() se utiliza para obtener el valor por su clave. No recuperará el valor si no conoce la clave. Cuando se llama al método get(K Key), calcula el código hash de la clave.

Supongamos que tenemos que buscar la clave 'Aman'. Se llamará al siguiente método.

 map.get(new Key('Aman')); 

Genera el código hash como 2657860. Ahora calcule el valor del índice de 2657860 utilizando la fórmula del índice. El valor del índice será 4, como hemos calculado anteriormente. El método get() busca el valor de índice 4. Compara la clave del primer elemento con la clave dada. Si ambas claves son iguales, devuelve el valor; de lo contrario, verifique el siguiente elemento en el nodo, si existe. En nuestro escenario, se encuentra como el primer elemento del nodo y devuelve el valor 19.

Busquemos otra clave 'Sunny'.

El código hash de la clave 'Sunny' es 63281940. El valor del índice calculado de 63281940 es 4, como lo hemos calculado para el método put(). Vaya al índice 4 de la matriz y compare la clave del primer elemento con la clave dada. También compara claves. En nuestro escenario, la clave dada es el segundo elemento y el siguiente del nodo es nulo. Compara la clave del segundo elemento con la clave especificada y devuelve el valor 29. Devuelve nulo si el siguiente del nodo es nulo.