Cómo funciona HashMap dentro de Java

Este artículo trata sobre cómo funciona el hashmap dentro de Java. Es muy importante comprender el concepto de Hash Graph, porque Hash Graph ha entrado en nuestra práctica de programación diaria y es la pregunta favorita del entrevistador en la entrevista.

Artículo original: https://www.java8net.com/2020/01/how-hashmap-works-internally-in-java.html

¿Qué es Hashmap y Hashing en Java?

El método de trabajo de Hashmap en Java depende principalmente del Principio de Hashing. Por lo tanto, antes de aprender cómo funciona HashMap dentro de Java, primero debemos entender qué son HashMap y hashing.

HashMap:
un HashMap es un mapa utilizado para almacenar asignaciones de pares clave-valor. Además, funciona en el Principio de Hashing. Para saber más sobre HashMap, visite este artículo: https://www.java8net.com/2020/01/hashmap-in-java.html

Principio de hash: en resumen, el hash es un método para generar un valor entero a partir de un objeto, que se denomina valor hash. En HashMap, el objeto clave se usa para el hash.

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

hashCode (): el método hashCode () se utiliza para obtener el código hash del objeto. Este método lo proporciona la clase Object. Puede anular este método en su clase para proporcionar su propia implementación.

equals (): el método equals se usa para verificar si dos objetos son iguales. Este método lo proporciona la clase Object. Puede anular este método en su clase para proporcionar su propia implementación.

¿Qué es un balde? : La matriz de nodos se denomina depósito. Cada nodo tiene una estructura de datos como LinkedList. Varios nodos pueden compartir el mismo depósito. La discapacidad puede variar. Un depósito puede tener múltiples nodos, dependiendo del método hashCode (). Cuanto mejor sea su método hashCode (), mejor se utilizará su depósito.

Choque de hash: esta es la parte principal. Ahora, sabemos que dos objetos desiguales pueden tener el mismo valor de código hash, cómo almacenar dos objetos diferentes en la misma ubicación de matriz llamada cubo.

La respuesta es LinkedList. Si recuerda, la propiedad de la clase Entrada es "siguiente". Este atributo siempre apunta al siguiente objeto en la cadena. Este es exactamente el comportamiento de LinkedList.

¿Cómo calcula Hashmap el índice de cubo en Java?

Para comprender cómo funciona HashMap dentro de Java, debemos entender cómo HashMap calcula el índice de un depósito. Hasta ahora, conocemos la estructura interna de HashMap, es decir, HashMap mantiene una matriz de cubos. Sin embargo, cuando almacenamos o recuperamos cualquier par clave-valor, HashMap calculará el índice del área de almacenamiento para cada operación.

El objeto clave se utiliza para calcular el índice del depósito. Al usar esta clave, el método privado hash (clave) de HashMap se usa para calcular el valor hash.

Nota: El método hash (clave) es un método privado de HashMap. Devuelve el valor hash de la clave. Si el valor hash es demasiado grande, se convierte en un valor hash más pequeño.

Pero lo que sucede, si el número entero devuelto por el valor hash del objeto clave es mayor que el tamaño de la matriz, es decir, hash (clave)> n, se puede generar una excepción ArrayOutOfBoundsException. Para manejar esta situación, HashMap usa expresiones para reducir el valor hash entre 0 y n-1:

Expresión de cálculo de índice index = hash (clave) & (n-1) Ahora, HashMap utiliza el valor de índice generado para encontrar la ubicación del área de almacenamiento, y nunca se generará ninguna excepción, porque el valor de índice siempre es de 0 a n-1.

Para saber más sobre el funcionamiento interno del hashmap, lea este blog: https://www.java8net.com/2020/01/how-hashmap-works-internally-in-java.html

Aprendizaje adicional:
https://www.java8net.com/2020/02/sort-hashmap-by-key-and-by-value.html
https://www.java8net.com/2020/02/treemap-in- java.html
https://www.java8net.com/2020/03/java-optional.html
https://www.java8net.com/2020/01/lambda-expression-java.html
https: //www.java8net .com / 2020/01 / functional-interface-in-java.html

de: https://dev.to//aryan19694946/how-hashmap-works-internally-in-java-3550

Publicado 0 artículos originales · me gusta 0 · visitas 409

Supongo que te gusta

Origin blog.csdn.net/cunxiedian8614/article/details/105690073
Recomendado
Clasificación