miércoles, 4 de septiembre de 2013

Tema 5- Teoria

HASH

Permite  almacenar  N  elementos  que  posteriormente  serán  localizados  a  través  de  un  acceso  rápido.

en java, cuando se define un equals, hay que incluir una funcion Hash para asignar un valor especifico a nuestra comparacion y evitar colisiones entre mismos objetos de las tablas Hash, en java se le llama  HaschCode y debe conservar la igualdad:
                              e1.equals(e2)  ⇒  e1.hashCode()  ==  e2.hashCode()
se puede redefinir de esta manera
          public int hashCode(){
                 int hash = 17; // comienzo con un valor no nulo, random
                 hash = 31* hash + who.hashCode();
                 return hash;
          }

INSERT
imaginemos que queremos insertar algo en el lugar x, si no corresponde al array no se inserta, da error, si esta libre inserta, pero y si esta ocupada?
[][a][b][c][][r][t][][][]
         ^
queremos insertar por ejemplo d en la posicion 2 (donde b), entonces, se deplazara tantas veces haga falta a la derecha para encontrar un sitio vacio, si llega a la misma posicion donde queriamos insertarlo (despues de dar la vuelta incluso), entonces estara ocupara y no se podra insertar. Asi quedaria
 [][a][b][c][d][r][t][][][]

La busqueda se haria igual, se busca d en 2, pero como no lo encuentra se desplaza a la derecha a ver si esta

ELIMINACION / DELETE

si queremos eliminar la d, buscaria en la posicion 2, pero como no la encuenta, se desplaza a la derecha buscandola
 [][a][b][c][][r][t][][][]

el problema es que queda un hueco, a la derecha, la solucion es eliminar r y t para insertarlos posteriormente

No hay comentarios:

Publicar un comentario