Modulo II. EDI 2010-2011Tablas hash
¿Podemos utilizar Object para los elementos de la tabla hash? ¿Cómo es y dónde se implementa la función de dispersión?Podemos utilizarlos cuando los objetos que insertemos en la tabla tengan redefinido el método hashCode()La función de dispersión para claves String se utiliza la Regla de HornerLa función de dispersión para claves de números enteros es tan sólo clave%BSe implementa en el método ya comentado hashCode().
Regla HornerJava utiliza lasiguienteregla:s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]Nosotros utilizamos lasiguienteregla:(((k1*32+k2)%B)*32+k3)Siendo k la posición de cada carácter, B el tamaño de la tabla y se multiplica por 32 para aprovechar el desplazamiento de bytes.Regla Horner** Suponemos un tamaño B=50CASA(32*3+43)%B(32*3+43)%B(32*3+43)%B(32*3+43)%B37 0   1  … 37  …  …  48  49CASA
Tablas hash EDI

Tablas hash EDI

  • 1.
    Modulo II. EDI2010-2011Tablas hash
  • 2.
    ¿Podemos utilizar Objectpara los elementos de la tabla hash? ¿Cómo es y dónde se implementa la función de dispersión?Podemos utilizarlos cuando los objetos que insertemos en la tabla tengan redefinido el método hashCode()La función de dispersión para claves String se utiliza la Regla de HornerLa función de dispersión para claves de números enteros es tan sólo clave%BSe implementa en el método ya comentado hashCode().
  • 3.
    Regla HornerJava utilizalasiguienteregla:s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]Nosotros utilizamos lasiguienteregla:(((k1*32+k2)%B)*32+k3)Siendo k la posición de cada carácter, B el tamaño de la tabla y se multiplica por 32 para aprovechar el desplazamiento de bytes.Regla Horner** Suponemos un tamaño B=50CASA(32*3+43)%B(32*3+43)%B(32*3+43)%B(32*3+43)%B37 0 1 … 37 … … 48 49CASA