Documentos de Académico
Documentos de Profesional
Documentos de Cultura
en Java
Taller de
Algoritmos y
Estructuras de
Datos II
1
Implementaciones
Utilizando todos los conceptos analizados en las secciones anteriores,
realizaremos nuestra implementación de tablas de hashing en Java.
Clases e interfaces
2
En la siguiente figura, se muestran las clases, interfaces y sus relaciones
mediante un diagrama de clases.
Figura 1:
Representación
Para simplificar su
complejidad, no
vamos a incluir la Para la representación de la tabla, guardaremos 2 variables en la clase
función de re- ExploracionTablaHash:
hashing. En caso
de que se quiera Utilizaremos un vector donde guardaremos cada uno de los elementos.
implementar, Estos elementos serán del tipo Hashable.
deberíamos definir Una variable entera (int) donde almacenaremos la cantidad de elementos
en esta clase la guardados en la tabla.
variable factor de
carga involucrada Interfaces
en el proceso de
re-hash. Primero vamos a crear la interfaz TablaHash, dentro de la cual definiremos
4 métodos:
Void insertar(x): inserta un elemento x en la tabla de hash.
Void remover(x): remueve un elemento x de la tabla de hash.
Hashable buscar(x): retorna el elemento que coincide con x.
Void vaciar(): remueve todos los elementos de la tabla.
3
Algunas aclaraciones para su implementación:
Figura 2:
4
Todos los objetos que se quieran guardar en la tabla de hash deberían
implementar la interfaz Hashable y redefinir el método hash (). En la
siguiente figura, se muestra el código para la interfaz Hashable.
Figura 3:
5
Figura 4:
Figura 5:
6
Método eliminar: recibe como parámetro un objeto de tipo Hashable para
ser eliminado de la tabla. La responsabilidad de encontrar la posición donde
se encuentra el valor se le atribuye al método buscarPos.
Figura 6:
Figura 7:
Figura 8:
7
Fuente: Libro “Estructura de Datos en Java” - Mark Weiss, Addison Wesley
Clase TablaExploracionCuadratica
Figura 9:
8
Como vemos en la Figura 14, se define la clase TablaExploracionCuadratica
que extiende de la clase abstracta que extiende de la clase
ExploracionTablaHash. Esta clase necesita definir el método buscarPos.
Figura 10:
Clase EntradaHash
9
Figura 11:
Interfaz Hashable
Figura 12:
Una vez creada la interfaz, estamos listos para crear nuestros objetos y
almacenarlos en la tabla de hash.
10
Figura 13: Implementación de la clase Persona
11
Figura 15: Código ejemplo utilizando hashtables del paquete java.utils
Línea 19-22: inserta en la tabla de hash los valores Persona, Saldo, Clave y
Valor (método put).
Línea 26: obtiene una enumeración con todos los nombres de personal o
claves de la tabla de hash para su recorrido (método keys).
Línea 27-28: ciclo para iterar sobre el enumerado obtenido en la línea 26.
12
Referencias
Weiss, M. (2000). Capítulo 19. En Autor, Estructura de Datos en Java.
Addison Wesley Iberoamericana.
Capítulo: 11
Thomas, H., Cormen, C. E., Leiserson, R. L., & Rivest, C. S. (2001). Capítulo
11. En Autor, Introduction to Algorithms (2nd ed.): McGraw-Hill Book
Company
Capítulo: 11
Lafore, R. (2002). Capítulo 11. En Autor, Data Structures & Algorithms in Java
(2nd ed.). SAMS.
13