Se puede utilizar objetos como elementos de una tabla hash si solo se necesitan los métodos de la clase Object. Si se requieren comparaciones u obtener propiedades como la clave, se debe sobrescribir el método hashcode. La función de dispersión calcula el índice de la tabla dividiendo múltiplos de la clave entre el tamaño de la tabla para distribuir los elementos. Se implementa dentro de la propia tabla hash.
2. ¿Podemos utilizar object para los elementos de la tabla Hash? Podemos utilizarlo en caso de que solo necesitemos los métodos que contiene object. En caso de querer hacer comparaciones del tipo es mayor, o es menor o querer obtener alguna propiedad como la clave no podríamos utilizar object. Deberíamos sobrescribir el método hashcode en el que devolvemos un entero a partir de los atributos de nuestro elemento (podíamos utilizarlo para sacar la clave) Podemos pasarle el objeto y la clave al método insertar.
3. ¿Cómo es y donde se implementa la función de dispersión? La fórmula utiliza es : (((((K1*32+k2)%B)*32+k3)%B)*32+k4)%B….. Siendo el índice de k el numero de letras de la clave alfanumérica. Se multiplica *32 para que sea potencia de 2 (y mayor que 27 que son las letras del alfabeto.) Se utiliza para darle pesos al orden de las letras de la palabra, porque sino 2 palabras con las mismas letras pero distinto orden serían sinónimos. Obtenemos el modulo de B que es el tamaño de la tabla hash, en cada letra para que no se produzca overflow(nos de cómo resultado una posición tan alta que no entre en la tabla). La función de dispersión la podemos implementar dentro de la propia tabla hash, llamándola desde el método insertar, buscar… utilizando la clave del objeto llamamos a la función de dispersión y obtenemos la posición en la tabla hash.
4. Tabla hash en un determinado estado de su funcionamiento String cadena= Elemento.codigo; //cadena= "p2002" insertar ( String cadena, Object x){} int posicion = funcionDispersion(cadena) ; // pos= 980; tabla [pos] = x ;