Ver Mensaje Individual
  #60 (permalink)  
Antiguo 27/05/2017, 21:23
Avatar de detective_jd
detective_jd
 
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años
Puntos: 6
Respuesta: Implementar TablaHash

Hola <b>CalgaryCorpus</b> me alegra que vuelvas a escribirme pensaba que estabas molesto conmigo por mis tonterías, hay varias cosas por decir:

Cita:
Lo que tienes que detallar es que cosa estaba mal que antes los tests no andaban y ahora si. Es que los tests estaban mal escritos? es que la implementacion estaba mal?
que es lo que cambio?
Verás lo que estaba mal era el cómo estaba encarado el código, al darle uso a los nodos cambiar casi toda su implementación se solucionó, con respecto a los test de UpTest y DownTest estaban mal encarados por el sólo chequeban si eran distintos de null cosa que si alguno era nulo, daba error Exception o NullPointerException, pasaba también mi ignorancia por poner mensajes que para los test no eran necesarios....

Cita:
Que es lo que aprendiste?
Sabía que los hashing eran estructuras de datos muy buenas para las búsquedas pero malas para las ordenaciones (al no ser que uses TreeMap), pero no sabía lo dependiente que eran de una fórmula de matemáticas (hash function) para la mayoría de sus funcionalidades, también que el uso de los nodos no sólo se límitan a los variados tipos de listas que existan también para los Map, también que no es lo mismo una implementación que hacer pruebas para garantizar que óptimos sean las funcionalidades de lo que
haces (en este caso el HashMap).

Cita:
Si logras compartir como fue tu implementacion con que problemas te encontraste, que tests hiciste y como los superaste, este post servira de ayuda a quien lo ha seguido. Sino, creo que solo te servira' a ti, y la idea del foro es mas altruista que egoista, asi lo veo yo.
De egoísmo nada, soy consciente que gran parte de lo hecho (48%) fue gracias a tu ayuda, eso sí que no soy alguien muy expresivo o muy comunicativo.
Me encontré con problemas de inexperiencia en los test, cómo también la dependencia de la función hash en la estructura, además de tonterías mías.
Los test que hicimos porque algunos fueron ideas tuyas, fueron cosas que a mí no se me hubieran ocurrido, además de que pensar en algo específico y no ver
todas las posibilidades de error, la indecisión de si usar nodos o a la vieja escuela fue otro problema grande y mis idas y vueltas.

El código lo pongo por si alguien lo quiere y claro también por si debería ir alguna prueba más que no haya tenido en cuenta:

https://github.com/detectivejd/HassM.../hashmapsimple

Por otro lado subí el código del HashSet casero que digamos la verdad, delega casi todo de hashmap, aunque tengo mis dudas:

https://github.com/detectivejd/HashS.../hashsetsimple

Con respecto a las pruebas estoy flojo porque no se me ocurre que más probar para el HashSet.
Mis dudas están con los métodos extras como containsAll que verifica si el set tiene todos los elementos de una coleccion, si no tiene uno devuelve falso.
el retainAll que conserva los elementos comúnes pero borra los otros y el removeAll borra todos los elementos de una colección, y la pregunta es:
¿para que los quiero? ¿porque las interfaces List y Set los tienen? ¿no era más fácil que las estructuras list y set no implementaran Collection? xq tiene las mismas
firmas Collection, además parece que el que creo parte del lenguaje tenía fascinación por las matemáticas digo por lo de conjuntos, intersecciones y demás.

Con respecto a errores me dice esto:

java.lang.Exception
at hashsetsimple.Test.comprobar_que(Test.java:6)
at hashsetsimple.ConstructorTest.creando_set_con_capa cidad_de_dos_elementos(ConstructorTest.java:25)
at hashsetsimple.ConstructorTest.test(ConstructorTest .java:70)
at hashsetsimple.Cuerpo.main(Cuerpo.java:7)

Lo más curioso es que en vez de guardarme 7 elementos me guarda 6, no quiero pensar que el error esta en la función hash, no sé que se te ocurre xq lo demás no da error alguno.

Espero sus respuestas y saludos.

PD: En un tema: ¿se pueden borrar mensajes?