¿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.
Antes de comprender el funcionamiento interno de HashMap, debe conocer los métodos hashCode() y equals().
Linux cambia el nombre del directorio
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.
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.
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
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.