¿En qué se diferencia la implementación interna de LinkedHashMap de la implementación de HashMap?

Leí que HashMap tiene la siguiente implementación:

main array 
[Entry] → Entry → Entry      ← linked-list implementation
[Entry]
[Entry] → Entry
[Entry]
[null ]

Por lo tanto, tiene una matriz de objetos de entrada.

Preguntas:

  1. Me preguntaba cómo puede un índice de esta matriz almacenar múltiples objetos de entrada en caso de un mismo código hash pero diferentes objetos.

  2. ¿Cómo es esto diferente de la LinkedHashMapimplementación? Es una implementación de lista doblemente vinculada del mapa, pero ¿mantiene una matriz como la anterior y cómo almacena los punteros al elemento siguiente y anterior?

Respuesta 1

Entonces, tiene una variedad de Entryobjetos.

No exactamente. Tiene una variedad de cadenas de Entryobjetos . Un objeto tiene un campo que permite encadenar los objetos como una lista vinculada.HashMap.EntrynextEntry

Me preguntaba cómo puede un índice de esta matriz almacenar múltiples Entryobjetos en caso de un mismo código hash pero diferentes objetos.

Porque (como muestra la imagen en su pregunta) los Entryobjetos están encadenados.

¿Cómo es esto diferente de la LinkedHashMapimplementación? Es una implementación de lista doblemente vinculada del mapa, pero ¿mantiene una matriz como la anterior y cómo almacena los punteros al elemento siguiente y anterior?

En la LinkedHashMapimplementación, la LinkedHashMap.Entryclase extiende la HashMap.Entryclase, agregando beforey aftercampos. Estos campos se utilizan para ensamblar los LinkedHashMap.Entryobjetos en una lista independiente doblemente vinculada que registra el orden de inserción. Entonces, en la LinkedHashMapclase, los objetos de entrada están en dos cadenas distintas:

  • una cadena de hash enlazada individualmente a la que se accede a través de la matriz de hash principal, y

  • una lista separada doblemente vinculada de todas las entradas que se mantiene en orden de inserción de entrada.

Respuesta: 2

Obtuve un grupo de enteros y quiero contar la cantidad de enteros max () que contiene mi transmisión. El método max () proviene de la API Stream. Iba por algo como esto int count = Arrays ...

¿Alguien puede explicar las posibles formas de que se produzcan pérdidas de memoria al usar jsp y servlets en modo de desarrollo? obteniendo una excepción de espacio pergemn después de comenzar a usar jsp y servlets. eclipse....

Estoy usando EGit con eclipse para sincronizar mi entorno de desarrollo con dos computadoras diferentes. Tengo un pequeño problema con el que originalmente creé por proyecto y lo envié a mi repositorio remoto de git (que ...

Tengo un JFrame y JPanel lleno de Jsomethings con un oyente de acción. Cuando el usuario hace clic en un objeto, quiero abrir otro JFrame. Esto es lo que hice: public void actionPerformed (ActionEvent e) {...