son recorrer qué los example create java linked-list hashmap hashcode bucket

java - recorrer - ¿Qué es exactamente el cubo en hashmap?



qué son los generics en java (4)

Los cubos son exactamente una matriz de nodos. Así que un solo contenedor es una instancia de la clase java.util.HashMap.Node. Cada Nodo es una estructura de datos similar a LinkedList, o puede ser como un TreeMap (desde Java 8), HashMap decide qué es mejor para el rendimiento: mantener los depósitos como LinkedList o TreeMap. TreeMap solo se elegirá en caso de que la función hashCode () esté mal diseñada, cuando se colocarán muchas entradas en un solo contenedor. Mira cómo se ven los cubos en HashMap:

/** * The table, initialized on first use, and resized as * necessary. When allocated, length is always a power of two. * (We also tolerate length zero in some operations to allow * bootstrapping mechanics that are currently not needed.) */ transient Node<K,V>[] table;

Recientemente, en una entrevista que me preguntaron, ¿qué es exactamente un cubo en el hashmap? ¿Es una matriz o un arrailista o qué?

Me confundí. Sé que los hashmaps están respaldados por matrices. Entonces, ¿puedo decir que bucket es una matriz con una capacidad de 16 en el inicio de almacenamiento de códigos hash y en qué listas vinculadas tienen su puntero de inicio?

Sé cómo funciona internamente un hashmap, solo quería saber qué es exactamente un cubo en términos de estructuras de datos.


Los cubos son básicamente una estructura de datos que se utiliza en el algoritmo de paginación del sistema operativo. Estar en un lenguaje muy laico.

Los objetos que representan un código hash particular se almacenan en ese grupo (básicamente, puede considerar que el encabezado de la estructura de datos de la lista vinculada es el valor del código hash que se representa en los términos del grupo)

Las referencias del objeto se almacenan en la lista de enlaces, cuyo encabezado representa el valor del código hash.

La JVM los crea y el tamaño, depende de la memoria asignada por la JVM.


No, un cubo es cada elemento de la matriz a la que se refiere. En versiones anteriores de Java, cada grupo contenía una lista enlazada de entradas de mapas. En las nuevas versiones de Java, cada grupo contiene una estructura de árbol de entradas o una lista de entradas vinculada.

De las notas de implementación en Java 8:

/* * Implementation notes. * * This map usually acts as a binned (bucketed) hash table, but * when bins get too large, they are transformed into bins of * TreeNodes, each structured similarly to those in * java.util.TreeMap. Most methods try to use normal bins, but * relay to TreeNode methods when applicable (simply by checking * instanceof a node). Bins of TreeNodes may be traversed and * used like any others, but additionally support faster lookup * when overpopulated. However, since the vast majority of bins in * normal use are not overpopulated, checking for existence of * tree bins may be delayed in the course of table methods. ...


Espero que esto pueda ayudarles a comprender bien la implementación del mapa hash.