Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/05/2017, 23:24
CalgaryCorpus
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: TablaHash y sus pasos

Las preguntas que haces al inicio no tienen que ver con Java, sino con estructuras de datos. Lista y Set son ambas colecciones de elementos, pero el set tiene caracteristicas que la lista no, y viceversa. En un set los elementos no estan repetidos, no existe orden necesariamente. Un set o conjunto, es un conjunto si cumple propiedades matematicas, sino el nombre no calzaria. Se definen operaciones sobre los conjuntos, union, interseccion, etc. Sugiero leas respecto a las estructuras de datos que quieres implementar, no ponerte a implementar sin entenderlas.

No mire' todo exhaustivamente, eso lo tienes que hacer tu, pero lo que mire es que la interseccion claramente esta mal, a menos que sea yo el que entienda mal lo que escribiste. Al leer el codigo pense', como puedes borrar de un conjunto un elemento que NO esta en ese conjunto? Eso es lo que dice tu codigo.

Haz un test que pruebe la interseccion matematicamente: dados 2 conjuntos con elementos comunes, la interseccion deberia obtener los elementos comunes, tienes una prueba asi? estas comprobando que la interseccion efectivamente obtiene los elementos comunes de los 2 conjuntos involucrados?

Lo mismo con todos los tests, haz las pruebas matematicas de conjuntos. No pruebes solamente que tus metodos se ejecutan, sino que los resultados tengan sentido matematico.

Los sets te daran muchas oportunidades de probar otras cosas, por ejemplo hacer interseccion o union de un conjunto sobre si mismo.

S interseccion S => S
S union S => S

O hacer interseccion o union con el conjunto vacio, interseccion de 2 conjuntos disjuntos, interseccion e union de conjunto vacio, etc.

Si tienes una excepcion, revisa por que ocurre, que es lo que estas haciendo o dejando de hacer que, por ejemplo, accedes a una referencia invalida.

Suerte.
__________________
Visita mi perfil en LinkedIn