Ayuda estructura de Datos

Hola compañeros estoy en la uni casi terminando materias y estoy parado dado que he tratado de buscar un código de funcionamiento de un método hash de plegamiento quiero ver un código como esta compuesto y razonar su funcionamiento pero no he tenido suerte. Alguien me podría ayudar con un ejemplo para ver y razonar su funciónamiento. De antemano les doy las gracias por su tiempo y atención

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

No sé si java.util.HashMap

No sé si java.util.HashMap utilice hash de plegamiento, pero puedes revisar el código para ver como lo hace:

Acá hay un video que lo explica....

Imagen de Cid

Un ejemplo con cadenas

Encontre un ejemplo de hash de plegamiento (folding) con cadenas espero te sirva:

Imagen de zaskiel

gracias amigo

Gracias amigo leere un poco el tema gracias

Imagen de zaskiel

gracias amigo

Muchas gracias bro leere y me pondre manos a la obra

Imagen de zaskiel

gracias amigo

gracias carnal

Inventar nuestra propia función hash

Si leemos de qué se trata este método en Wikipedia:

Consiste en dividir el número en diferentes partes, y operar con ellas (normalmente con suma o multiplicación). También se produce colisión. Por ejemplo, si dividimos el número de 7 cifras en 2, 2 y 3 cifras y se suman, dará otro número de tres cifras (y si no, se toman las tres últimas cifras):

5700931 → 57 + 00 + 931 = 988
3498610 → 34 + 98 + 610 = 742
0056241 → 00 + 56 + 241 = 297
9134720 → 91 + 34 + 720 = 845
5174929 → 51 + 74 + 929 = 1054

Nota: Estas solo son sugerencias y que con cada problema se pude implementar una nueva función hash que incluso tu puedes inventar o formular.

Nosotros podemos inventar nuestra propia función hash. Se me ocurre, por ejemplo, dividir un número positivo (si trabajásemos con números) en grupos de miles. Por ejemplo: 5700931 → 5,700,931 → 5 + 700 + 931 = 1636. Si tomo los tres último digitos, entonces el resultado es 636. En Java:

 

Esta función hash devuelve de 0 a 999 para cualquier entero positivo ( ). Si mi tabla hash tuviera 10 cubetas, entonces pondría aquellas claves con hash 0 a 99 en la primera cubeta (índice 0), de 100 a 199 en la segunda cubeta (índice 1) y así sucesivamente. Es decir:

 

Imagen de joseguru

Esto te puede ayudar!!!!

 


Salida-->