Estructura de almacenamiento de HashMap

Estructura de almacenamiento de HashMap
Aquí debemos distinguir entre la estructura de almacenamiento de HashMap después de JDK1.7 y JDK1.8. Antes de JDK1.7 y antes, se almacenaba en una matriz y en una lista vinculada.
Sin embargo, como todos sabemos, cuando la longitud de la lista vinculada es particularmente larga, la eficiencia de la consulta disminuirá linealmente y la complejidad del tiempo de la consulta es O (n). Por lo tanto, JDK1.8 lo diseña para alcanzar un cierto umbral y luego convierte la lista vinculada en un árbol rojo-negro.
Aquí hay una breve descripción de las características de los árboles rojos y negros:

  1. Cada nodo tiene solo dos colores: rojo o negro
  2. El nodo raíz debe ser negro.
  3. Cada nodo hoja (NIL) es un nodo negro vacío
  4. Desde el nodo raíz hasta el nodo hoja, no pueden aparecer dos nodos rojos consecutivos
  5. Comenzando desde cualquier nodo, la ruta a los nodos secundarios debajo de él contiene el mismo número de nodos negros

Dado que el árbol rojo-negro es un árbol de búsqueda binario con equilibrio automático, la complejidad temporal de la consulta puede reducirse a O (log). (Los árboles rojos y negros no son el foco de este artículo, los zapatos para niños que no entienden pueden referirse a la información relevante por sí mismos)

¿Por qué introducir árboles rojos y negros?

JDK 1.8 era una matriz + lista vinculada anteriormente, y no se han introducido árboles rojos y negros, lo que provocó que la complejidad del tiempo de la búsqueda sea demasiado larga cuando la lista vinculada es O (n), y perdió por completo la intención original de diseñar HashMap. Para esta situación, JDK 1.8 Introdujo el árbol rojo-negro (la complejidad del tiempo de búsqueda es O (logN), lo que es el árbol rojo-negro, el árbol rojo-negro es un árbol de búsqueda binario auto equilibrado, no un árbol binario absolutamente equilibrado, abandonó su búsqueda Equilibrio absoluto, búsqueda del equilibrio aproximado, en el caso de que no haya diferencia con respecto a la complejidad temporal del árbol binario equilibrado, se garantiza que solo se puede lograr un máximo de tres rotaciones para cada inserción para lograr el equilibrio, lo que también es más fácil de lograr. .
 

Diagrama de estructura de HashMap:

128 artículos originales publicados · elogiados 79 · visitas 7191

Supongo que te gusta

Origin blog.csdn.net/weixin_45151795/article/details/105672520
Recomendado
Clasificación