Tablas Hash Sergio Sánchez Marcos 71942861-B Grupo L
¿Podemos utilizar Object para los elementos de la tabla hash? El almacenamiento de elementos en la tabla hash solo requiere una clave, lo cual puede ser proporcionada por el método hashCode() de la clase Object Object hashCode() equals(Object) toString(): String Mercancia codigo:int hashCode() equals(Object) toString(): String return codigo;  cuerpo Tabla Hash funcionDispersion(codigo )
Función matemática que nos permita transformar la clave en un índice numérico para el array e implementación Buscamos tres objetivos:  Distribución homogénea Reducción de colisiones Algoritmo rentable Protección Activa:  Peso = 32 (Desp. 5 bits) K = longitud (Cadena) Regla de Horner Fusión func. Dispersión y func, Conversión Ejemplo función conversión (clave = “EDI”): Fc(“EDI”) = (((‘E’ * 32 + ‘D’)%B) * 32 + ‘I’)%B  Implementación: public int getClaveNumerica(String clave) { int acum = clave.charAt(0); for(int i=1; i<clave.length(); i++) acum = (acum * 32 + clave.charAt(i))%B; return acum; }

Tablas Hash (Sergio Sánchez Marcos)

  • 1.
    Tablas Hash SergioSánchez Marcos 71942861-B Grupo L
  • 2.
    ¿Podemos utilizar Objectpara los elementos de la tabla hash? El almacenamiento de elementos en la tabla hash solo requiere una clave, lo cual puede ser proporcionada por el método hashCode() de la clase Object Object hashCode() equals(Object) toString(): String Mercancia codigo:int hashCode() equals(Object) toString(): String return codigo; cuerpo Tabla Hash funcionDispersion(codigo )
  • 3.
    Función matemática quenos permita transformar la clave en un índice numérico para el array e implementación Buscamos tres objetivos: Distribución homogénea Reducción de colisiones Algoritmo rentable Protección Activa: Peso = 32 (Desp. 5 bits) K = longitud (Cadena) Regla de Horner Fusión func. Dispersión y func, Conversión Ejemplo función conversión (clave = “EDI”): Fc(“EDI”) = (((‘E’ * 32 + ‘D’)%B) * 32 + ‘I’)%B Implementación: public int getClaveNumerica(String clave) { int acum = clave.charAt(0); for(int i=1; i<clave.length(); i++) acum = (acum * 32 + clave.charAt(i))%B; return acum; }