Tablas hash Realizado por Adrián García Amores
¿Object o “elemento de tabla”? Según mi punto de vista, hay que hacer crear una clase específica que será lo que contenga la tabla hash, ya que además de necesitar algunos métodos concretos para ese objeto en si, necesitamos que tenga, además de la información, una clave y un estado, para mantener el objeto activo o inactivo.
Función matemática Gracias a la regla de horner, podemos obtener un valor numérico más o menos bueno para obtener el menor número de colisiones en la tabla hash:
Implementación public int reglaDeHorner(String clave) { int longitudClave = clave.length(); if (longitudClave > 15) { longitudClave = 15; } int sumaInicial; int contadorLetra = 2; if (longitudClave == 0) { return 0; } else if (longitudClave == 1) { return (clave.charAt(0) * 32) % B; } else { sumaInicial = ( (clave.charAt(0) * 32 + clave.charAt(1)) % B); } while (contadorLetra <= longitudClave - 1) { sumaInicial = (sumaInicial * 32 + clave.charAt(contadorLetra)) % B; contadorLetra++; } return sumaInicial; }

Tablas hash (Adrián García Amores)

  • 1.
    Tablas hash Realizadopor Adrián García Amores
  • 2.
    ¿Object o “elementode tabla”? Según mi punto de vista, hay que hacer crear una clase específica que será lo que contenga la tabla hash, ya que además de necesitar algunos métodos concretos para ese objeto en si, necesitamos que tenga, además de la información, una clave y un estado, para mantener el objeto activo o inactivo.
  • 3.
    Función matemática Graciasa la regla de horner, podemos obtener un valor numérico más o menos bueno para obtener el menor número de colisiones en la tabla hash:
  • 4.
    Implementación public intreglaDeHorner(String clave) { int longitudClave = clave.length(); if (longitudClave > 15) { longitudClave = 15; } int sumaInicial; int contadorLetra = 2; if (longitudClave == 0) { return 0; } else if (longitudClave == 1) { return (clave.charAt(0) * 32) % B; } else { sumaInicial = ( (clave.charAt(0) * 32 + clave.charAt(1)) % B); } while (contadorLetra <= longitudClave - 1) { sumaInicial = (sumaInicial * 32 + clave.charAt(contadorLetra)) % B; contadorLetra++; } return sumaInicial; }