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